2012-04-11 10 views
7

एक जावा एप्लिकेशन एक पायथन एप्लिकेशन में एक एक्सएमएल भेजता है। वे दोनों एक ही मशीन पर हैं। जब मैं प्राप्त फ़ाइल खोलता हूं तो मैं अतिरिक्त लाइनें देख सकता हूं (अतिरिक्त सीआर के कारण)। इसका क्या कारण रह सकता है?पाइथन प्राप्त लाइनों के अंत में एक अतिरिक्त सीआर जोड़ता है

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

यह मूल फ़ाइल है:

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 

यह इस प्रकार है:

यह रिसीवर है

<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> 

यह प्राप्त है

+0

एप्लिकेशन किस ऑपरेटिंग सिस्टम पर चल रहे हैं? क्या यह खिड़कियां है? – gbulmer

+0

यह विंडोज़ 7 है। – markAnthopins

+1

क्या आप "c: /python/python.xml" फ़ाइल देख रहे हैं? विंडोज़ पर, सी सी पुस्तकालयों में से कुछ यूनिक्स फ़ाइलों को विंडोज फाइलों के साथ संगत बनाने के लिए कैरिज-रिटर्न/लाइन-फीड प्रोसेसिंग करते हैं। यूनिक्स केवल लाइन अलगाव (\ n) के लिए एक वर्ण का उपयोग करता है, लेकिन विंडोज cr + lf का उपयोग करता है। तो यह लगभग संभव है कि प्रसंस्करण के दो सेट (जावा और पायथन) एक लाइन विभाजक को दो, – gbulmer

उत्तर

7

'w' से 'wb' से फ़ाइलमोड बदलें, अन्यथा पाइथन प्लेटफ़ॉर्म विशिष्ट प्रतिनिधित्व ('\r\n' विंडोज़ के लिए) में किसी भी न्यूलाइन ('\n') को परिवर्तित करता है। बाइनरी मोड इस रूपांतरण को दबा देता है।

संबंधित मुद्दे