2012-02-07 10 views
57

Ben basit bir kod vardır:Python'un dosya.write() 'sini Windows'taki aynı yeni çizgi formatını Linux'taki gibi kullanmak için nasıl zorlayabilirim (" r n" ve " n")?

f = open('out.txt','w') 
f.write('line1\n') 
f.write('line2') 
f.close() 

Kod pencerelerin üzerinde çalışır ve dosya boyutunu 12 bytes verir ve linux 11 bytes nedeni \n var linux yılında yeni hat

olduğunu verir ve kazanmak için \r\n

olduğunu

Ancak kodumda \n olarak yeni satır belirtiyorum. Soru, python'un her zaman yeni hattı \n olarak tutmasını ve işletim sistemini kontrol etmemesini nasıl sağlayabilirim.

cevap

89

Sen ikili mod yani wb yerine w dosyayı açmak gerekir. Yapmazsanız, satır karakterlerinin sonu OS'ye özgü olanlara otomatik olarak dönüştürülür.

Python referansından open() hakkında bir alıntı.

The default is to use text mode, which may convert '\n' characters to a platform-specific representation on writing and back on reading.

+0

Python 3'te, dizeler kodlanmadığı için, 'TypeError'dan kaçınmak için' outfile.write (bytes (line, "UTF-8")) gibi bir şeyle yazmanız gerekir: 'str' arabellek arayüzünü destekleyin. – Noumenon

11

Hala textmode kullanabilir ve satır besleme-satır Python 3.4.2 ile test edilmiştir anahtar kelime argüman satırsonu

f = open("./foo",'w',newline='\n') 

ile zorlayabilir.

Düzeltme: Bu, Python 2.7'de çalışmaz.

İlgili konular