如何更改行尾约定?

How to change end-of-line conventions?

我有一个我认为很简单的任务。我需要创建一个在行尾使用 unix LF 约定的文本文件。但是,当我尝试使用 pandas .to_csv 完成此操作时,我最终得到了 CR LF。如果我留在我的机器上并且我对所有内容都使用 python ,这将不是问题。但我不是。该代码将成为同事将使用的应用程序的一部分,并且该文件将发送给第三方以实现自动化。代码如下:

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

这位于我的代码中间,但当文件保存在目标文件夹中时,它总是切换回 CR LF。我认为这可能与 Windows 是“Python 的 helpful". I have tried to use type of solution with no luck. I am also not having any luck finding a dos2unix 类型包有关。无论如何我可以写以 '\n' 结尾的行并让它坚持下去Windows(尽可能使用 to_csv)?

我正在使用 Python 2.7 和 Windows 7。

编辑:我知道 notepad++,但我想把这一切都写在 Python 中,所以我的同事只需单击一个按钮(我将使用 Tkinter 并将其冻结为 .exe 一次我搞定了)。 .txt 可以是 Windows 格式,但我将(正在)将相同的信息写入 .MAT 和 .ref 文件。在那些文件中它需要'\n'行尾,但Windows仍然给我'\r\n'。

请注意,此答案特定于 Python 2 的 CSV 处理。

to_csv 默认以 'w' 模式打开文件,默认为文本模式。在 Windows 上,文本模式将 \n 转换为 \r\n。改为以二进制模式打开文件,如果框架中有非 ASCII 文本,请指定编码。

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