Impossible de créer un fichier .txt pour sauvergarder les données d'une app.

Haspic Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -  
Haspic Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je récemment suivi un tuto (https://www.youtube.com/watch?v=jE-SpRI3K5g) pour commencer à apprendre tkinter. Je l'ai donc fini, et tout marche bien quand je lance l'app depuis l'éditeur de code (j'utilise Pycharm).
Sauf que lorsque j'essaie de lancer le programme depuis un fichier .py et non depuis Pycharm, une partie ne fonctionne plus.
Dans le tuto, on créer une app qui permet de stocker de nombreux chemins d'accès de fichier .exe, qui lorsque l'on appuie sur un boutton, sont tous lancé. On sauvegarde aussi les chemins d'accès dans un fichier .txt, qui sont récupérées à la prochaine ouverture de l'app pour éviter de les chercher à nouveau à chaque ouverture de l'app. Depuis Pycharm, le fichier .txt est bien créé et utilisé au redémarrage de l'app. Mais quand je lance depuis un fichier .py, le fichier de sauvegarde n'est pas créé.

Voici le code:

import tkinter as tk
from tkinter import filedialog, Text
import os

root = tk.Tk()
apps = []

if os.path.isfile("save.txt"):
    print("et")
    with open("save.txt", "r") as f:
        tempApps = f.read()
        tempApps = tempApps.split(",")
        apps = [x for x in tempApps if x.strip()]

def addApp():

    for widget in frame.winfo_children():
        widget.destroy()


    filename= filedialog.askopenfilename(initialdir="/", title="Select File",
                                         filetypes=(("executables", "*.exe"),
                                                    ("all files", '*.*')))
    apps.append(filename)
    print(filename)
    for app in apps:
        label = tk.Label(frame, text=app)
        label.pack()

def runApps():
    for app in apps:
        os.startfile(app)

canvas = tk.Canvas(root, height=700, width=700, bg="#263D42")
canvas.pack()

frame = tk.Frame(root, bg='white')
frame.place(relwidth=0.8, relheight=0.8, relx=0.1, rely=0.1)

openFile = tk.Button(root, text="Open File", padx=10,
                     pady=5, fg='white', bg="#263D42", command=addApp)

openFile.pack()

runApps = tk.Button(root, text="Run Apps", padx=10,
                     pady=5, fg='white', bg="#263D42", command=runApps)

runApps.pack()

for app in apps:
    label = tk.Label(frame, text=app)
    label.pack()

root.mainloop()

with open('save.txt' , 'w') as f:
    for app in apps:
        f.write(app + ',')



Des idées?
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, comment sais-tu que le fichier n'est pas créé?
à part cela, le programme fonctionne correctement?
0
Haspic Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
Le programme fonctionne bien sinon oui.
A part le fait qu'il ne lit pas le fichier non plus si j'en utilise un déjà créé

Et comment je sais que le fichier n'est pas créé, et bien je ne le vois pas là où il devrait être. (là où il est normalement créé quand j'utilise pycharm, entre autre le dans le même dossier que celui du programme)
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Haspic Messages postés 40 Date d'inscription   Statut Membre Dernière intervention  
 
donc quand tu exécutes une deuxième fois le programme, il ne trouve pas le fichier créé à la première exécution?
si j'étais à ta place, je rajouterais un print en ligne 55.
0
Haspic Messages postés 40 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
rajouter un print en cette ligne ne servirais pas à grand chose, quand la boucle se finie, le programme se fermera et donc impossible de voir si ça à bien marché ou non
0