Как изменить соглашения об окончании строки?

У меня есть то, что я думал, было бы простой задачей. Мне нужно создать текстовый файл, который использует соглашение Unix LF в конце строки. Однако, когда я пытаюсь сделать это, используя pandas .to_csv, я получаю CR LF. Это не было бы проблемой, если бы я оставался на своей машине, и если бы я использовал Python для всего. Но я нет. Код будет частью приложения, которое будет использовать коллега, и файл будет отправлен третьей стороне для автоматизации. Код выглядит следующим образом:

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

Это находится в середине моего кода, но всегда переключается обратно на CR LF, когда файлы сохраняются в целевой папке. Я думаю, что это может быть связано с тем, что Windows " полезна ". Я попытался использовать этот тип решения без удачи. Мне также не повезло найти пакет типа dos2unix для Python. В любом случае можно ли написать строки, заканчивающиеся на '\n', и оставить их в Windows (если возможно, используя to_csv)?

Я использую Python 2.7 и Windows 7.

Изменить: я знаю о notepad++, но я пытаюсь написать все это на Python, поэтому мой коллега должен только нажать кнопку (я буду использовать Tkinter и замораживать это в.exe, как только я закончу)..Txt может быть отформатирован в Windows, но я буду (я) записывать ту же информацию в файлы.MAT и.ref. В этих файлах ему нужен конец строки '\n', но Windows все еще дает мне '\r\n'.

1 ответ

Решение

to_csv по умолчанию открывается файл в 'w' режим по умолчанию в текстовом режиме. В Windows текстовый режим переводит \n в \r\n, Вместо этого откройте файл в двоичном режиме и укажите кодировку, если в вашем фрейме есть текст не ASCII.

df.to_csv('filename.txt',sep='\t',mode='wb',encoding='utf8')
Другие вопросы по тегам