2012-04-11 24 views
7

Bir Java uygulaması bir Python uygulamasına bir XML gönderir. Her ikisi de aynı makinede. Alınan dosyayı açtığımda ekstra çizgiler görebiliyorum (fazladan CR'ler nedeniyle). Bunun nedeni ne olabilir?Python, Alınan Satırların Sonunda Ekstra CR Ekler

while ((bytesRead = file_inp.read(buffer)) > 0) { 
     output_local.write(buffer, 0, bytesRead); 
    } 

olan bu orijinal dosya olup: bu gönderen

f = open('c:/python/python.xml', 'w') 
while 1: 
    print("xxx")   
    data = socket.recv(recv_frame) 
    remain_byte = remain_byte - len(data) 
    print(remain_byte) 
    f.write(data) 
    if (something): 
     break 

:

Bu

alıcısıdır

<root><CR> 
<CR><LF> 
    <SONG><CR> 
<CR><LF> 
     <ARTIST>Coldplay</ARTIST><CR> 
<CR><LF> 
    </SONG><CR> 
<CR><LF> 
</root><CR> 
<CR><LF> 
:

<root><CR><LF> 
    <SONG><CR><LF> 
     <ARTIST>Coldplay</ARTIST><CR><LF> 
    </SONG><CR><LF> 
</root><CR><LF> 

Bu alınan bir

+0

Hangi uygulamalarda çalışan uygulamalar var? Pencereler mi? – gbulmer

+0

Windows 7. – markAnthopins

+1

"c: /python/python.xml" dosyasına bakıyor musunuz? Pencerelerde, bazı C kütüphaneleri, UNIX dosyalarını Windows dosyalarıyla uyumlu hale getirmek için satır başı/satır besleme işlemini gerçekleştirir. Unix sadece satır ayırma için bir karakter kullanır (\ n), ancak Windows cr + lf kullanır. Bu nedenle, iki işleme kümesinin (Java ve Python) bir satır ayırıcısını ikiye genişletmesi mümkün, – gbulmer

cevap

7

'w' - filipini 'wb' olarak değiştirin, aksi halde Python herhangi bir yeni satırı ('\n') özel olarak platforma (Windows için '\r\n') dönüştürür. İkili mod bu dönüşümü bastırır.