2011-07-13 14 views
47

इस कोड को निम्न त्रुटि संदेश देता है: in_f रूपलेखन त्रुटि: यूनिकोड को मजबूर: जरूरत स्ट्रिंग या बफ़र

  • खुला साथ

    (बफरिंग = -1 infile, मोड = 'आर',), खुला (outfile , मोड = 'w', बफरिंग = -1) out_f के रूप में: लेखन त्रुटि: यूनिकोड को मजबूर: जरूरत स्ट्रिंग या बफर, फ़ाइल

    # Opens each file to read/modify 
    infile=open('110331_HS1A_1_rtTA.result','r') 
    outfile=open('2.txt','w') 
    
    import re 
    
    with open (infile, mode='r', buffering=-1) as in_f, open (outfile, mode='w', buffering=-1) as out_f: 
        f = (i for i in in_f if i.rstrip()) 
        for line in f: 
         _, k = line.split('\t',1) 
         x = re.findall(r'^1..100\t([+-])chr(\d+):(\d+)\.\.(\d+).+$',k) 
         if not x: 
          continue 
         out_f.write(' '.join(x[0]) + '\n') 
    

कृपया कोई मुझे मदद नहीं मिली।

उत्तर

53

आप प्रत्येक फ़ाइल को दो बार खोलने की कोशिश कर रहे हैं! सबसे पहले आप कार्य करें:

infile=open('110331_HS1A_1_rtTA.result','r') 

और उसके बाद आप फिर से open कार्य करने के लिए infile पारित (जो एक फ़ाइल वस्तु है):

with open (infile, mode='r', buffering=-1) 

open पाठ्यक्रम अपनी पहली तर्क की उम्मीद कर एक फ़ाइल नाम होने के लिए की है, एक खुली फाइल नहीं!

केवल एक बार फ़ाइल खोलें और आपको ठीक होना चाहिए।

+0

इतना भयानक भयानक। धन्यवाद! –

8

आप फ़ाइल ऑब्जेक्ट को फ़ाइल नाम के रूप में पास करने का प्रयास कर रहे हैं। अपने कोड के शीर्ष पर

infile = '110331_HS1A_1_rtTA.result' 
outfile = '2.txt' 

का उपयोग करने का प्रयास करें।

(इतना ही नहीं फिर फ़ाइल खोलने का प्रयास के साथ कि समस्या कारण open() की दोगुनी उपयोग, यह भी मतलब है है कि infile और outfile निष्पादन के दौरान बंद कर दिया कभी नहीं कर रहे हैं, हालांकि वे शायद कार्यक्रम एक बार बंद कर दिया प्राप्त करेंगे समाप्त होता है।)

5

कम विशिष्ट मामले के लिए (केवल प्रश्न में कोड नहीं - क्योंकि यह इस सामान्य त्रुटि संदेश के लिए Google में पहले परिणामों में से एक है। यह त्रुटि तब भी होती है जब कोई निश्चित तर्क के साथ कुछ os कमांड चलाता है।

उदाहरण के लिए:

os.path.exists(arg) 
os.stat(arg) 

जब कोई तर्क नहीं है तो यह अपवाद उठाएगा।

+0

इसके लिए धन्यवाद। वह पायथन त्रुटि कोड वास्तव में भ्रामक है। – mjuarez

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