2016-12-28 65 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