2013-02-28 8 views
17

Ich bin mir nicht sicher, warum, aber aus irgendeinem Grund, wenn ich "Region" im Dateinamen der Ausgabedatei habe, gibt es mir Dieser Fehler:Region: IOError: [Errno 22] ungültiger Modus ('w') oder Dateiname

IOError: [Errno 22] invalid-Modus ('W') oder Dateiname: 'path \ regionlog.txt'

Es tut dies für "region.txt", " logregion.txt ", usw.

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 

Warum ist das? Ich würde gerne meine Datei "regionlog.txt" nennen, aber es kommt immer wieder mit diesem Fehler. Gibt es einen Weg dahin?

Antwort

26

verwenden Schrägstriche:

'path/regionlog.txt' 

oder rohe Strings:

r'path\regionlog.txt' 

Oder zumindest Ihre Schrägstriche entkommen:

'path\\regionlog.txt' 

 

\r ist ein Wagenrücklauf.

 

Eine weitere Option: Verwenden Sie os.path.join und Sie müssen nicht alles über Schrägstriche Sorge:

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

dritte Option: double die Schrägstriche. –

+1

Vierte Option: Verwenden Sie 'os.path.join'. Das OP hat bereits 'os.path' importiert. –

1

In C Standardsprache, \t, \n, \r sind Escape-Zeichen. \t ist eine quer zur nächsten TAB-Position. \n ist ein Zeilenumbruch und \r ist ein Wagenrücklauf. Sie sollten \\r oder /r verwenden, und Sie werden das Problem lösen!

+0

Das nächste Mal, überprüfen Sie, um sicherzustellen, was Sie eingegeben haben, kam richtig auf dem Bildschirm, als Ihre '\ r' erschien wie '\ r', die überhaupt nicht hilfreich wäre. –

0

Eine weitere einfache Lösung ist, die Änderung der "\ r" Instanzen im Dateinamen Pfad "\ r"

Verwandte Themen