Python exécutable windows, créer/vider .txt avec open, permission denied

Fermé
unCodeurDuDimanche - 19 sept. 2021 à 10:02
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 - 26 sept. 2021 à 12:31
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 :


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:

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
19 sept. 2021 à 10:43
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?
0
unCodeurDuDimanche
19 sept. 2021 à 11:07
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.
0
unCodeurDuDimanche > unCodeurDuDimanche
19 sept. 2021 à 11:16
J'ai réessayé en plaçant le dossier dans Mes Documents, même problème.
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.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > unCodeurDuDimanche
19 sept. 2021 à 11:34
et en donnant les droits admin au programme?
0
unCodeurDuDimanche > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
19 sept. 2021 à 11:44
Avec clique droit -> Exécuter en tant qu'administrateur sur l'exécutable, rien ne change : permission refusée.
0
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é)
0
unCodeurDuDimanche
26 sept. 2021 à 12:05
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.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
26 sept. 2021 à 12:23
As-tu analysé et comparé les permissions des dossiers?
0
_Ritchi_ Messages postés 21210 Date d'inscription samedi 17 mars 2007 Statut Contributeur Dernière intervention 20 avril 2024 6 058
26 sept. 2021 à 12:31
Bonjour,
Il faudrait poser la question sur le forum Windows 10 de CCMet si jamais tu obtiens une réponse, reviens ici pour la partager.
Merci d'avance,
Ritchi
0