2016-12-28 8 views
3

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

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

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

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

Edit: Я знаю, о Notepad ++, но я стараюсь, чтобы написать все это в Python, так что мой коллега имеет только нажать на кнопку (я буду использовать Tkinter и замораживая это на .exe, как только я закончу). .txt может быть отформатирован в Windows, но я буду (am) записывать одну и ту же информацию в файлы .MAT и .ref. В этих файлах он нуждается в конце конца строки «\ n», но Windows все равно дает мне «\ r \ n».

+0

Я предлагаю вам попробовать написать имя файла без расширения, знакомого с Windows (.txt), возможно, просто не имеет расширения. В любом случае это не имеет значения для Linux. –

+0

@SaherAhwal: расширение файла не имеет ничего общего с проблемой, проблема связана с данными _in_ файла. –

ответ

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