Python在接收​​行的末尾添加额外的CR

mar*_*ins 7 python java sockets client-server carriage-return

Java应用程序将XML发送到Python应用程序.他们都在同一台机器上.当我打开收到的文件时,我可以看到额外的行(因为额外的CR).这可能是什么原因?

这是接收者:

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
Run Code Online (Sandbox Code Playgroud)

这是发件人:

    while ((bytesRead = file_inp.read(buffer)) > 0) {
        output_local.write(buffer, 0, bytesRead);
    }
Run Code Online (Sandbox Code Playgroud)

这是原始文件:

<root><CR><LF>
    <SONG><CR><LF>
        <ARTIST>Coldplay</ARTIST><CR><LF>
    </SONG><CR><LF>
</root><CR><LF>
Run Code Online (Sandbox Code Playgroud)

这是收到的:

<root><CR>
<CR><LF>
    <SONG><CR>
<CR><LF>
        <ARTIST>Coldplay</ARTIST><CR>
<CR><LF>
    </SONG><CR>
<CR><LF>
</root><CR>
<CR><LF>
Run Code Online (Sandbox Code Playgroud)

Ste*_*ski 7

将文件模式更改'w''wb',否则Python会将任何换行符('\n')转换为特定于平台的表示形式('\r\n'对于Windows).二进制模式会抑制此转换.