2009-08-03 14 views
21

Funkcja os.write może być używana do zapisywania bajtów w deskryptorze pliku (nie obiekt pliku). Jeśli wykonam os.write(fd, '\n'), tylko znak LF zostanie zapisany w pliku, nawet w systemie Windows. Chciałbym mieć CRLF w pliku na Windowsie i tylko LF w Linuksie.
Jaki jest najlepszy sposób, aby to osiągnąć?Jak napisać natywny znak nowego wiersza do deskryptora pliku w języku Python?

Używam Pythona 2.6, ale zastanawiam się również, czy Python 3 ma inne rozwiązanie.

+0

'os.write' potrzebuje FD jako swojego pierwszego argumentu - pls napraw to pytanie! I nie, Python 3 nie jest zasadniczo różny (poza tym, że chce bytów, a nie tekstu - który zawsze jest Unicode w Pythonie 3 - w każdym wywołaniu). –

+0

Masz rację, dzięki! – hcs42

Odpowiedz

46

Użyj tego

import os 
os.write(fd, os.linesep) 
8

Jak o os.write(<file descriptor>, os.linesep)? (import os jest niepotrzebny, ponieważ wydaje się, że już go zaimportował, w przeciwnym razie pojawiłyby się błędy przy użyciu os.write na początku.)

Powiązane problemy