2013-02-28 10 views
17

Non so perché, ma per qualche motivo, ogni volta che ho "regione" nel nome file del file di output, mi dà questo errore:Regione: IOError: [Errno 22] modalità non valida ('w') o nome file

IOError: [Errno 22] modalità non valida ('w') o il nome del file: 'path \ regionlog.txt'

Lo fa per "region.txt", " logregion.txt ", ecc.

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 

Perché è questo? Mi piacerebbe davvero chiamare il mio file "regionlog.txt" ma continua a venire con quell'errore. C'è un modo per aggirarlo?

risposta

26

Utilizzare le barre:

'path/regionlog.txt' 

o stringhe prime:

r'path\regionlog.txt' 

O almeno Fuga tuo backslash:

'path\\regionlog.txt' 

 

\r è un ritorno a capo.

 

Un'altra opzione: usare os.path.join e non dovrete preoccuparvi di tagli a tutti:

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

terza opzione: il doppio dei tagli. –

+1

Quarta opzione: usare 'os.path.join'. L'OP ha già importato 'os.path'. –

1

In C linguaggio standard, \t, \n, \r sono caratteri di escape. \t è una traversa alla successiva posizione TAB. \n è una nuova riga e \r è un ritorno a capo. Dovresti usare \\r o /r, e tu risolvi il problema!

+0

La prossima volta, assicurati che quello che hai digitato sia uscito correttamente sullo schermo, dato che '\\ r' si presentava come' \ r', il che non sarebbe affatto utile. –

0

Un'altra soluzione semplice sta cambiando le istanze "\ r" nel percorso di nome di file "\ r"

Problemi correlati