web-dev-qa-db-fra.com

Région: IOError: [Errno 22] mode non valide ('w') ou nom de fichier

Je ne sais pas pourquoi, mais pour une raison quelconque, chaque fois que j'ai "région" dans le nom du fichier de sortie, cela me donne l'erreur suivante:

IOError: [Errno 22] mode non valide ('w') ou nom de fichier: 'chemin\régionlog.txt'

Il le fait pour "region.txt" , "logregion.txt" , etc.

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

Pourquoi est-ce? Je voudrais vraiment nommer mon fichier "regionlog.txt" mais il continue à arriver avec cette erreur. Y a-t-il un moyen de le contourner?

18
FaerieDrgn

Utilisez des barres obliques:

'path/regionlog.txt'

Ou des cordes brutes:

r'path\regionlog.txt'

Ou du moins échapper à vos barres obliques inverses:

'path\\regionlog.txt'

\r est un retour chariot.

Une autre option: utilisez os.path.join et vous n'aurez plus à vous soucier des barres obliques:

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

En langage standard C, \t, \n, \r sont des caractères d'échappement. \t est un transversal à la prochaine position de tabulation. \n est une nouvelle ligne et \r est un retour à la ligne. Vous devriez utiliser \\r ou /r et vous résoudrez le problème!

1
JackChen

De plus, Python affiche également ce message lorsque vous essayez d'ouvrir un fichier> 50 Mo à partir d'un lecteur partagé SharePoint.

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

1
Henk van der Laak

Une autre solution simple consiste à remplacer les instances "\ r" dans le chemin du fichier par "\ R"

0
Roee Anuar