autorisation Python refusée

Python ne peut ouvrir, lire et écrire dans des fichiers que si un interpréteur dispose des autorisations nécessaires. Si vous essayez d’ouvrir, de lire ou d’écrire dans un fichier sur lequel Python n’a aucune autorisation, vous rencontrerez l’erreur PermissionError : [errno 13] autorisation refusée.

Dans ce guide, nous expliquons ce que signifie cette erreur et pourquoi elle est générée. Nous allons parcourir un exemple afin que vous puissiez apprendre exactement comment résoudre cette erreur.

PermissionError : [errno 13] autorisation refusée

Les ordinateurs utilisent les autorisations de fichier pour protéger l’intégrité des fichiers . Certains fichiers ont un accès restreint par défaut. Vous pouvez modifier les autorisations d’accès à un fichier à tout moment.

Disons que vous travaillez sur un programme important. Vous voudrez peut-être que ce programme ne soit lisible que par vous. Pour ce faire, vous pouvez modifier le "lire‚" autorisations sur tous les fichiers et dossiers de votre programme. Cela limiterait l’accès à votre programme.

Tout fichier auquel vous essayez d’accéder à partir d’un programme Python doit être lisible par l’utilisateur ou le groupe qui exécute le fichier.

Si vous exécutez un script Python à partir d’un processus de serveur Web, par exemple, vous devez vous assurer que l’utilisateur propriétaire du serveur Web a accès à tous les fichiers que vous référencez dans votre code.

Un exemple de scénario

Nous allons créer un programme qui lit une liste de scores NFL à partir d’un fichier dans un programme.

Nous avons un fichier appelé afc_east.csv qui contient les éléments suivants :

81 % des participants ont déclaré qu’ils se sentaient plus confiants quant à leurs perspectives d’emploi en technologie après avoir assisté à un bootcamp. Soyez jumelé à un bootcamp aujourd’hui.

Le diplômé moyen d’un bootcamp a passé moins de six mois en transition de carrière, du démarrage d’un bootcamp à la recherche de son premier emploi.

Notre fichier est un fichier CSV. Nous allons importer le module Python csv dans notre code afin de pouvoir travailler avec le fichier :

Ensuite, ouvrons notre fichier dans notre programme Python. Nous pouvons le faire en utilisant l’instruction csv.reader() :

Ce code s’ouvrira le fichier appelé afc_east.csv en mode lecture. Ensuite, le lecteur CSV interprétera le fichier. Le lecteur CSV renverra une liste de valeurs sur lesquelles nous pouvons itérer. Nous imprimons ensuite chacune de ces valeurs sur la console en utilisant une for loop et une instruction print() afin que nous puissions voir le contenu de notre fichier ligne par ligne.

Exécutons notre programme pour voir s’il fonctionne :

Notre code renvoie une erreur.

La solution

Une PermissionError indique que Python n’a pas les bonnes autorisations pour accéder à un fichier.

Vérifiez les autorisations de notre fichier. Nous pouvons le faire en utilisant la commande ls -la :

Nous pouvons voir que le fichier afc_east.csv appartient à la root utilisateur :

C’est un problème car nous n’exécutons pas Python en tant que root. Cela signifie que Python ne peut pas lire notre fichier. Pour corriger cette erreur, nous devons modifier les autorisations de propriété de notre fichier à l’aide de la commande chown :

Cette commande rend le "james‚" utilisateur et "admin‚" groupe les propriétaires du fichier.

Alternativement, nous pourrions changer les permissions du fichier en utilisant la commande chmod :

Cette commande rend notre fichier lisible et exécutable par tout le monde. Le fichier n’est accessible en écriture que par le propriétaire. Essayons à nouveau d’exécuter notre script Python :

Notre code imprime avec succès tous les scores de notre fichier.

Conclusion

L’erreur PermissionError : [errno 13] autorisation refusée se produit lorsque vous essayez d’accéder à un fichier depuis Python sans avoir les autorisations nécessaires.

Pour corriger cette erreur, utilisez la commande chmod ou chown pour modifier les autorisations du fichier afin que le bon utilisateur et /ou le groupe peut accéder au fichier. Vous avez maintenant les compétences nécessaires pour résoudre cette erreur comme un pro !