web-dev-qa-db-de.com

Region: IOError: [Errno 22] ungültiger Modus ('w') oder Dateiname

Ich weiß nicht warum, aber aus irgendeinem Grund gibt es immer einen Fehler, wenn ich "Region" im Dateinamen der Ausgabedatei habe:

IOError: [Errno 22] ungültiger Modus ('w') oder Dateiname: 'Pfad\regionlog.txt'

Dies geschieht 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 möchte meine Datei wirklich "regionlog.txt" nennen, aber diese Fehlermeldung wird immer wieder angezeigt. Gibt es einen Weg dahin?

18
FaerieDrgn

Schrägstriche verwenden:

'path/regionlog.txt'

Oder rohe Saiten:

r'path\regionlog.txt'

Oder entkomme wenigstens deinen Backslashes:

'path\\regionlog.txt'

\r ist ein Wagenrücklauf.

Eine weitere Option: Verwenden Sie os.path.join und Sie müssen sich keine Gedanken um Schrägstriche machen:

output = os.path.abspath(os.path.join('path', 'regionlog.txt'))
29
Pavel Anossov

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

1
JackChen

Darüber hinaus gibt Python diese Meldung auch aus, wenn versucht wird, eine Datei> 50 MB von einem gemeinsam genutzten SharePoint-Laufwerk aus zu öffnen.

https://support.Microsoft.com/en-us/help/2668751/you-cannot-download-more-than-50-mb-or-upload-large-files-when-the-upl

1

Eine andere einfache Lösung ist das Ändern der "\ r" -Instanzen im Dateinamenpfad in "\ R"

0
Roee Anuar