Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Python在接收到的行末尾添加一个额外的CR_Java_Python_Sockets_Client Server_Carriage Return - Fatal编程技术网

Java Python在接收到的行末尾添加一个额外的CR

Java Python在接收到的行末尾添加一个额外的CR,java,python,sockets,client-server,carriage-return,Java,Python,Sockets,Client Server,Carriage Return,Java应用程序向Python应用程序发送XML。它们都在同一台机器上。 当我打开收到的文件时,我可以看到额外的行(因为额外的CRs)。这可能是什么原因 这是接收器: f = open('c:/python/python.xml', 'w') while 1: print("xxx") data = socket.recv(recv_frame) remain_byte = remain_byte - len(data) print(remain_

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

这是接收器:

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
这是发件人:

    while ((bytesRead = file_inp.read(buffer)) > 0) {
        output_local.write(buffer, 0, bytesRead);
    }
这是原始文件:

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

酷玩
这是收到的:

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

酷玩

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

应用程序运行在什么操作系统上?是windows吗?您正在查看文件“c:/python/python.xml”吗?在windows上,一些C库执行回车/换行处理,以使UNIX文件与windows文件兼容。Unix仅使用一个字符分隔行(\n),但Windows使用cr+lf。所以有可能两组处理(Java和Python)正在将一行分隔符扩展为两行分隔符,是的,我正在检查的文件是正确的。将文件模式从
'w'
更改为
'wb'
。IIRC在打开文件进行写操作时使用“wb”,这会抑制Python进行行分隔符扩展。