95 votes

PermissionError : [Errno 13] en Python

Je commence tout juste à apprendre Python et j'ai un problème comme indiqué ci-dessous :

a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')

Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')
PermissionError: [Errno 13] Permission denied: 'E:\\Python Win7-64-AMD 3.3\\Test\

Il semble qu'il s'agisse d'une erreur de permission de fichier. Si quelqu'un peut m'éclairer, j'apprécierais beaucoup.

NOTE : je ne sais pas comment fonctionnent les fichiers Python et Windows mais je suis connecté à Windows en tant qu'administrateur et le dossier a des droits d'administrateur.

J'ai essayé de changer .exe pour être exécuté en tant qu'administrateur.

84voto

Joachim Isaksson Points 85969

Quand on le fait ;

a_file = open('E:\Python Win7-64-AMD 3.3\Test', encoding='utf-8')

...vous essayez d'ouvrir un... répertoire comme un fichier, ce qui peut (et sur la plupart des systèmes de fichiers non UNIX) échouer.

Votre autre exemple ;

a_file = open('E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')

devrait bien fonctionner si vous avez juste la permission sur a.txt . Vous pouvez utiliser une version brute ( r -préfixé), mais assurez-vous que votre chemin ne contient pas de caractères d'échappement tels que \n qui seront traduits en caractères spéciaux.

a_file = open(r'E:\Python Win7-64-AMD 3.3\Test\a.txt', encoding='utf-8')

32voto

Kai Wang Points 1637

Dans mon cas, j'écrivais dans un fichier ouvert dans Excel.

2voto

Mew Points 81

Pour moi, j'ai eu cette erreur lorsque j'essayais d'écrire un fichier dans un dossier et que je voulais m'assurer que le dossier existait. J'ai accidentellement utilisé :

path = Path("path/to/my/file.txt")
path.mkdir(parents=True, exist_ok=True)
with open(path, "w") as file:
    ...

mais la deuxième ligne signifie "faire un répertoire à l'adresse ce le chemin exact (et faire ses parents aussi, sans lancer d'erreurs parce qu'ils existent déjà)". La troisième ligne lance alors un PermissionError parce que vous ne pouvez pas utiliser open() sur un répertoire le chemin, bien sûr ! La deuxième ligne aurait dû être :

path.parent.mkdir(parents=True, exist_ok=True)

0voto

Toldry Points 93

J'ai rencontré ce problème lorsque j'ai accidentellement essayé d'exécuter mon module python via l'invite de commande alors que mon répertoire de travail était le suivant C:\Windows\System32 au lieu du répertoire habituel à partir duquel je lance mon module python

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X