bonjour, j'ai un petit soucil, j'ai un raspberry pi pico sur micropython et je suis en train de faire un OS de console desus.
Dans un fichier main.py, il y'a un code qui par rapport au chiffre qu'il y'a dans le fichier whatdo.txt ouvre un fichier python précis.
Tout fonctionne très bien, lors que je met par exemple le chiffre 3 dans whatdo.txt il ouvre g3.py, lors que je met 2 dans whatdo.txt il ouvre g2.py etc...
Mais quand je modifie la donnée de whatdo.txt via le fichier g1.py (ce qui est le cas), il change pas la valeur de whatdo.txt et me retourne 1 dans le terminal. pourquoi ?
Main.py:
print("test")
game = open("whatdo.txt", "r")
gamen = game.read()
gamestr = str(gamen)
gameint = int(gamestr)
print(gameint)
if gameint == 0:
print("menu!")
import menu
if gameint == 1:
print("ok")
from games import g1
if gameint == 2:
from games import g2
if gameint == 3:
from games import g3
Je n'ai pas trop compris l'intérêt de maintenir dans whatdo.txt ce que tu pourrais faire en ayant simplement cet entier (quitte à l'initialiser à partir de whatdo.txt et à rafraîchir whatdo.txt quand tu quittes).
De plus, il est un peu étrange de faire des imports conditionnés par le contenu du fichier. Normalement, chacun de tes fichiers g1, g2, g3 devraient avoir un point d'entrée (c'est à dire une fonction qui correspond au programme principal, disons main)
Enfin, il serait plus propre de lire ton fichier avec le context manager with.
g1.py
def main():
print("G1")
g2.py
def main():
print("G1")
g3.py
def main():
print("G3")
main.py
from g1 import main as main_g1
from g2 import main as main_g2
from g3 import main as main_g3
# Charger i à partir de "whatdo.txt" s'il existe
i = None
try:
with open("whatdo.txt", "r") as f:
i = int(f.read())
print(f"i = {i} chargé à partir de whatdo.txt")
except:
while True:
while i is None:
i = int(input("Saisir i [1=g1, 2=g2, 3=g4, 0=quit]: "))
if i == 0:
break
elif i == 1:
main_g1()
elif i == 2:
main_g2()
elif i == 3:
main_g3()
# Sauver i dans "whatdo.txt"
with open("whatdo.txt", "w") as f:
print(i, file=f)
i = None
Exemple :
(mando@silk) (~) $ python3 main.py
Saisir i [1=g1, 2=g2, 3=g4, 0=quit]: 1
G1
Saisir i [1=g1, 2=g2, 3=g4, 0=quit]: 2
G2
Saisir i [1=g1, 2=g2, 3=g4, 0=quit]: 3
G3
Saisir i [1=g1, 2=g2, 3=g4, 0=quit]: 4
Saisir i [1=g1, 2=g2, 3=g4, 0=quit]: 0