Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Adds An Extra CR At The End Of The Received Lines

A Java application sends an XML to a Python application. They are both on the same machine. When I open the received file I can see extra lines (because of extra CRs). What could be the reason for this?

This is the receiver:

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

This is the sender:

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

This is the original file:

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

This is the received:

<root><CR>
<CR><LF>
    <SONG><CR>
<CR><LF>
        <ARTIST>Coldplay</ARTIST><CR>
<CR><LF>
    </SONG><CR>
<CR><LF>
</root><CR>
<CR><LF>
like image 216
markAnthopins Avatar asked Apr 11 '12 17:04

markAnthopins


1 Answers

Change filemode from 'w' to 'wb', otherwise Python converts any newlines ('\n') into the platform specific representation ('\r\n' for Windows). Binary mode suppresses this conversion.

like image 172
Steven Rumbalski Avatar answered Oct 24 '22 05:10

Steven Rumbalski