2016-12-28 30 views
3

我有我認爲會是一個簡單的任務。我需要創建一個在行尾使用unix LF約定的文本文件。但是,當我嘗試使用pandas .to_csv完成此操作時,我最終得到了CR LF。如果我留在我的機器上,並且如果我使用python來處理所有事情,這將不會成爲問題。但我不是。該代碼將成爲同事將使用的應用程序的一部分,並將該文件發送給第三方進行自動化。代碼如下:如何更改行尾約定?

df.to_csv("filename.txt", sep = '\t',line_terminator = '\n') 

這個坐在我的代碼中間,但它總是切換回CR LF當文件被保存在目標文件夾。我認爲這可能與Windows「helpful」有關。我試圖用this類型的解決方案沒有運氣。我也沒有找到Python的dos2unix類型包。無論如何,我可以寫出以'\ n'結尾的行,並將它粘在Windows中(如果可能,使用to_csv)?

我使用Python 2.7和Windows 7

編輯:我知道記事本+ +,但我想寫這一切在Python,所以我的同事只需要點擊一個按鈕(我將使用Tkinter的並在完成後將它凍結到一個.exe文件中)。 .txt可以是Windows格式的,但是我將()將相同的信息寫入.MAT和.ref文件。在這些文件中,它需要'\ n'行尾,但Windows仍然給我'\ r \ n'。

+0

我建議你儘量寫一個沒有Windows(.txt)熟悉的擴展名的文件名,可能只是沒有擴展名。無論如何,這對linux無關緊要。 –

+0

@SaherAhwal:文件擴展名與問題無關,問題在於數據在文件中。 –

回答

5

to_csv默認打開'w'模式下的文件,默認爲文本模式。在Windows文本模式下,將\n轉換爲\r\n。相反,以二進制模式打開文件,並在幀中包含非ASCII文本的情況下指定編碼。

df.to_csv('filename.txt',sep='\t',mode='wb',encoding='utf8') 
+0

這解決了我所有格式的問題。感謝您的洞察力。 – Josh

+0

您是否認爲使用「wb」可以解決此問題中指定的問題:http://stackoverflow.com/questions/41519036/problems-with-newlines-using-django-on-a-windows-server-in-法國 – brfox