2013-02-28 6 views
17

मुझे यकीन नहीं है कि क्यों, लेकिन किसी कारण से, जब भी मेरे पास आउटपुट फ़ाइल के फ़ाइल नाम में "क्षेत्र" होता है, तो यह मुझे देता है इस त्रुटि:क्षेत्र: IOError: [Errno 22] अमान्य मोड ('डब्ल्यू') या फ़ाइल नाम

IOError: [errno 22] अमान्य मोड ('मौ') या फ़ाइल का नाम: 'पथ \ regionlog.txt'

यह करता है इस "region.txt" के लिए, " logregion.txt ", आदि

class writeTo: 
    def __init__(self, stdout, name): 
     self.stdout = stdout 
     self.log = file(name, 'w') #here is where it says the error occurs 

output = os.path.abspath('path\regionlog.txt') 
writer = writeTo(sys.stdout, output) #and here too 

यह क्यों है? मैं वास्तव में अपनी फ़ाइल "regionlog.txt" नाम देना चाहता हूं लेकिन यह उस त्रुटि के साथ आ रहा है। क्या इसके आसपास कोई रास्ता है? फ़ॉरवर्ड स्लैश

उत्तर

26

उपयोग:

'path/regionlog.txt' 

या कच्चे तार:

r'path\regionlog.txt' 

या कम से कम अपने बैकस्लैश से बचने:

'path\\regionlog.txt' 

 

\r एक कैरिज रिटर्न है।

 

एक अन्य विकल्प: os.path.join का उपयोग करें और आप सभी पर स्लैश बारे में चिंता करने की ज़रूरत नहीं होगी:

output = os.path.abspath(os.path.join('path', 'regionlog.txt')) 
+1

तीसरे विकल्प में "\ r" उदाहरणों बदल रहा है। –

+1

चौथा विकल्प: 'os.path.join' का उपयोग करें। ओपी पहले ही 'os.path' आयात किया गया है। –

1

सी मानक भाषा में, \t, \n, \r भागने पात्र हैं। \t अगली टैब स्थिति के लिए एक विपरीत है। \n एक नई लाइन है और \r एक कैरिज रिटर्न है। आपको \\r या /r का उपयोग करना चाहिए, और आप समस्या का समाधान करेंगे!

+0

अगली बार, यह सुनिश्चित करने के लिए जांचें कि आपने जो टाइप किया है वह स्क्रीन पर सही ढंग से आया है, क्योंकि आपका '\\ आर' 'r' जैसा दिखाई देता है, जो कि सभी सहायक नहीं होगा। –

0

एक और सरल समाधान फ़ाइल नाम पथ के लिए "\ आर"

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