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

Fermé
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020 - 15 août 2020 à 10:30
Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020 - 18 août 2020 à 15:33
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 23329 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 Ambassadeur 1 551
15 août 2020 à 14:41
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 dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020
15 août 2020 à 16:38
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 23329 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 1 551 > Haspic Messages postés 40 Date d'inscription dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020
15 août 2020 à 20:48
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 dimanche 15 décembre 2019 Statut Membre Dernière intervention 18 août 2020 > yg_be Messages postés 23329 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024
18 août 2020 à 15:33
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