Python exécutable windows, créer/vider .txt avec open, permission denied
unCodeurDuDimanche
-
_Ritchi_ Messages postés 21333 Date d'inscription Statut Contributeur Dernière intervention -
_Ritchi_ Messages postés 21333 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'essaye de créer des petits logiciels personnels Python puis de les distribuer à quelques proches sur Windows. Mais j'ai un problème étonnant de permission refusée pour créer/vider un fichier .txt à partir d'un exécutable Windows... Voici les détails :
J'ai un script, plusieurs modules et surtout un fichier "permutation.txt" que mon programme doit créer, lire, vider, etc...
Je code mon logiciel sous Linux (Xubuntu), tout fonctionne (création, lecture, écrasement du fichier "permutation.txt").
Pour obtenir un .exe, je passe sur mon Windows 10 (j'ai un dual-boot). Je colle mon projet sur le bureau et je teste (je lance le script avec Edupython pour ne pas me prendre la tête), et je suis satisfait de voir que tout fonctionne (aucun problème de droit là non plus !).
Vient le moment de créer l'exécutable. Pour cela, j'installe auto-py-to-exe (avec pip de python39), je créer l'exécutable en joignant le fichier permutation.txt et j'obtiens un dossier avec tout dedans sur mon bureau (pas de problème de droit je pense). Je lance l'exécutable et la lecture du fichier "permutation.txt" fonctionne !
MAIS : quand je supprime le fichier "permutation.txt" pour tester, l'exécutable n'arrive pas à le recréer... et me renvoie une erreur du type (de mémoire) :
File "...", line ..., dans 'creer_vider_fichier'
Permission error: [Error 13] permission denied: 'permutation.txt'
Voici la fonction qui semble planter une fois dans le .exe :
Lorsque je l'appelle simplement, avec un chemin relatif :
Merci d'avance pour votre aide !
D'habitude je me dépatouille assez bien mais là, je ne vois pas ce qui peut faire planter l'exécutable alors que tout fonctionne avant...
Ps : je précise que j'ai essayé pas mal de choses déjà en fouillant un peu sur les forums, notamment :
- rien ne change en mettant open(...) dans un with, ce que je fait d'habitude d'ailleurs mais bon, le problème ne semble pas venir de là de toute façon (tout fonctionne avant l'exécutable).
- rien ne change non plus en indiquant un chemin absolu (avec os.getcwd).
J'essaye de créer des petits logiciels personnels Python puis de les distribuer à quelques proches sur Windows. Mais j'ai un problème étonnant de permission refusée pour créer/vider un fichier .txt à partir d'un exécutable Windows... Voici les détails :
J'ai un script, plusieurs modules et surtout un fichier "permutation.txt" que mon programme doit créer, lire, vider, etc...
Je code mon logiciel sous Linux (Xubuntu), tout fonctionne (création, lecture, écrasement du fichier "permutation.txt").
Pour obtenir un .exe, je passe sur mon Windows 10 (j'ai un dual-boot). Je colle mon projet sur le bureau et je teste (je lance le script avec Edupython pour ne pas me prendre la tête), et je suis satisfait de voir que tout fonctionne (aucun problème de droit là non plus !).
Vient le moment de créer l'exécutable. Pour cela, j'installe auto-py-to-exe (avec pip de python39), je créer l'exécutable en joignant le fichier permutation.txt et j'obtiens un dossier avec tout dedans sur mon bureau (pas de problème de droit je pense). Je lance l'exécutable et la lecture du fichier "permutation.txt" fonctionne !
MAIS : quand je supprime le fichier "permutation.txt" pour tester, l'exécutable n'arrive pas à le recréer... et me renvoie une erreur du type (de mémoire) :
File "...", line ..., dans 'creer_vider_fichier'
Permission error: [Error 13] permission denied: 'permutation.txt'
Voici la fonction qui semble planter une fois dans le .exe :
def creer_vider_fichier(chemin):
"""..."""
try:
f = open(chemin, 'w')
f.close()
except FileNotFoundError:
print("Le chemin '", chemin, "' n'est pas valide.")
Lorsque je l'appelle simplement, avec un chemin relatif :
creer_vider_fichier("permutation.txt")
Merci d'avance pour votre aide !
D'habitude je me dépatouille assez bien mais là, je ne vois pas ce qui peut faire planter l'exécutable alors que tout fonctionne avant...
Ps : je précise que j'ai essayé pas mal de choses déjà en fouillant un peu sur les forums, notamment :
- rien ne change en mettant open(...) dans un with, ce que je fait d'habitude d'ailleurs mais bon, le problème ne semble pas venir de là de toute façon (tout fonctionne avant l'exécutable).
- rien ne change non plus en indiquant un chemin absolu (avec os.getcwd).
Configuration: Windows / Firefox 92.0
A voir également:
- Python with open permission denied
- Open office gratuit - Télécharger - Suite bureautique
- Citizen code python avis - Accueil - Outils
- Open core legacy patcher - Accueil - MacOS
- Open sankoré - Télécharger - Bureautique
- Open workbench - Télécharger - Gestion de projets
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
tu décris un soucis de re-création de fichier.
as-tu le même soucis à la création d'un fichier n'ayant jamais existé?
as-tu testé ailleurs que sur le bureau?
tu décris un soucis de re-création de fichier.
as-tu le même soucis à la création d'un fichier n'ayant jamais existé?
as-tu testé ailleurs que sur le bureau?
Bonjour,
Oui le soucis est le même si je ne joins pas le fichier permutation dès le départ (impossible de créer le fichier).
Non je n'ai pas tester ailleurs que sur le bureau (l'exécutable et le fichier 'permutation.txt' sont dans un dossier sur le bureau)... Je peux essayer mais cela me dérangerait que ce ne soit pas possible sur le bureau, de toute façon.
(Ah zut j'ai fait répondre au lieu de commenter... désolé)
Oui le soucis est le même si je ne joins pas le fichier permutation dès le départ (impossible de créer le fichier).
Non je n'ai pas tester ailleurs que sur le bureau (l'exécutable et le fichier 'permutation.txt' sont dans un dossier sur le bureau)... Je peux essayer mais cela me dérangerait que ce ne soit pas possible sur le bureau, de toute façon.
(Ah zut j'ai fait répondre au lieu de commenter... désolé)
Pour ceux qui se poseraient la question plus tard, mon programme fonctionne (c-a-d arrive à recréer le fichier permutation) si je le place dans "Ce PC > Utilisateurs > mon_nom" par exemple.
yg_be a raison (merci à lui), ça dépend de l'endroit où le programme se trouve. Je suppose que les dossiers "Bureau" et "Documents" sont protégés... A vrai dire ça ne règle pas vraiment mon problème car j'aimerai pouvoir placer mon dossier ici (si quelqu'un sait comment désactivé les droits pour un programme maison...), mais bon au moins il y a moyen que ça fonctionne, c'est déjà ça.
yg_be a raison (merci à lui), ça dépend de l'endroit où le programme se trouve. Je suppose que les dossiers "Bureau" et "Documents" sont protégés... A vrai dire ça ne règle pas vraiment mon problème car j'aimerai pouvoir placer mon dossier ici (si quelqu'un sait comment désactivé les droits pour un programme maison...), mais bon au moins il y a moyen que ça fonctionne, c'est déjà ça.
Oui le soucis est le même si je ne joins pas le fichier permutation dès le départ (impossible de créer le fichier).
Non je n'ai pas tester ailleurs que sur le bureau (l'exécutable et le fichier 'permutation.txt' sont dans un dossier sur le bureau)... Je peux essayer mais cela me dérangerait que ce ne soit pas possible sur le bureau, de toute façon.
Pourtant quand je lui donne un fichier 'permutation .txt' déjà créé le programme fonctionne (il lit correctement), c'est la création qui bloque.