Python Adds An Extra CR At The End Of The Received Lines
carriage-return, client-server, java, python, sockets
Solution
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.
Problem
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> ```