2015-11-28 8 views
5

का उपयोग करते समय मैं अपने कॉलेज में पायथन ले रहा हूं और मैं अपने वर्तमान असाइनमेंट से फंस गया हूं। हमें 2 फाइलें लेनी चाहिए और उनकी तुलना करना चाहिए। मैं बस फ़ाइलें खोलने के लिए कोशिश कर रहा हूँ ताकि मैं उनके लिए उपयोग कर सकते हैं, लेकिन मैं त्रुटि "ValueError: embedded null character""ValueError: एम्बेडेड नल कैरेक्टर" ओपन()

file1 = input("Enter the name of the first file: ") 
file1_open = open(file1) 
file1_content = file1_open.read() 

इस त्रुटि का क्या मतलब है बार आ रही है?

+0

फ़ाइलें कहां से आ रहे हैं? –

+0

मेरे शिक्षक ने प्रोग्राम चलाने के दौरान उपयोग किए जाने वाले परीक्षक फ़ाइलों को जोड़ा। टेस्टर्स में से एक में पहली फ़ाइल जो मुझे त्रुटि देती है वह है "टेस्ट/4-test.txt" – Erica

+0

आपके पास स्ट्रिंग में एम्बेडेड एक शून्य बाइट है जो पायथन का उपयोग करके काम नहीं करेगा, आपको नल बाइट्स/एस को हटाने की जरूरत है । आप कौन सा ओएस उपयोग कर रहे हैं? –

उत्तर

2

पायथन 3.5 के लिए फ़ाइलों का डिफ़ॉल्ट एन्कोडिंग 'utf-8' है।

विंडोज के लिए फ़ाइलों का डिफ़ॉल्ट एन्कोडिंग कुछ और होता है।

आप दो पाठ फ़ाइलों को खोलने का इरादा है, तो आप इस कोशिश कर सकते हैं:

import locale 
locale.getdefaultlocale() 
file1 = input("Enter the name of the first file: ") 
file1_open = open(file1, encoding=locale.getdefaultlocale()[1]) 
file1_content = file1_open.read() 

मानक पुस्तकालय में कुछ स्वचालित पहचान होनी चाहिए।

नहीं तो आप अपना खुद का बना हो सकता है:

def guess_encoding(csv_file): 
    """guess the encoding of the given file""" 
    import io 
    import locale 
    with io.open(csv_file, "rb") as f: 
     data = f.read(5) 
    if data.startswith(b"\xEF\xBB\xBF"): # UTF-8 with a "BOM" 
     return "utf-8-sig" 
    elif data.startswith(b"\xFF\xFE") or data.startswith(b"\xFE\xFF"): 
     return "utf-16" 
    else: # in Windows, guessing utf-8 doesn't work, so we have to try 
     try: 
      with io.open(csv_file, encoding="utf-8") as f: 
       preview = f.read(222222) 
       return "utf-8" 
     except: 
      return locale.getdefaultlocale()[1] 

और फिर

file1 = input("Enter the name of the first file: ") 
file1_open = open(file1, encoding=guess_encoding(file1)) 
file1_content = file1_open.read() 
+0

मुझे अपने कार्यक्रम में कुछ भी आयात करने की अनुमति नहीं है – Erica

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