Affichage d'un fichier suivi de l'arrêt du script

Vindaloo -  
jee pee Messages postés 9441 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

J'ai écrit un script qui extrait des données d'un fichier xml et qui les enregistre dans un fichier csv.

À la fin de l’exécution je souhaiterait que le fichier csv soit affiché pour l'utilisateur.

Mon problème c'est que si j'utilise la commande os.system("mon_fichier"), le programme ne s'arrête qu'à la fermeture de ce dernier.

Quelqu'un aurait-il une meilleur façon de procéder svp ?
Windows / Firefox 109.0

6 réponses

  1. raplapla
     

    Salut, sur linux, fastoche.

    import subprocess
    
    subprocess.call("programme &", shell=True)

    DSur windows, aucune idée, il doit aussi y avoir une façon de lancer un programme non bloquant, peut-être  avec ShellExecute ? C'est plus une question à poser sur le forum windows je pense.

    Bonne chance.

    0
  2. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Bonjour,

    Avec Windows, je fait comme ça:

    os.popen(filename)

    le fichier s'ouvre dans mon éditeur de texte favori, mais cela n'empêche pas le déroulement du reste du programme

    0
  3. Vindaloo Messages postés 3 Statut Membre
     

    Bonjour,

    Merci pour vos réponses.

    Du coup, petite précision je travaille avec Windows.

    Alors je  viens d'essayer la commande os.popen(filename) et ça fonctionne comme indiqué merci.

    Ce qui me dérange c'est que mon programme ne s'arrête pas. Même si j'ajoute après un sys.exit().

    À noter que si j'arrête mon script manuellement dans Eclipse le fichier Excel se ferme.

    J'ai essayer d'utilisé le module atexit, mais peut être que je m'y prends mal. Le code :

    def open_file():
        os.system(str(Path(path_file.parent, "Intensité.csv")))
        
    atexit.register(open_file)

    Cela déclenche bien l'ouverture du fichier mais le programme ne s'arrête pas pour autant...

    0
  4. Phil_1857 Messages postés 1883 Date d'inscription   Statut Membre Dernière intervention   169
     

    Ah ?

    Moi je fais simplement ceci:

    import os
    
    print('''Ouverture du fichier dans l'éditeur''')
    os.popen('test1.txt')
    
    #suite du code
    for k in range(10):
        print(k)
    
    input('Presser Entrée pour terminer ...')

    Le fichier s'ouvre dans l'éditeur et la suite du programme s'effectue jusqu'à la fin:

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Vindaloo Messages postés 3 Statut Membre
     

    Tout à fait d'accord avec toi sur ça.

    Cela dit le programme ne s'arrête pas tant que le fichier n'a pas été fermé.

    L'objectif est que le programme soit utilisé par des utilisateurs autre que mois et ça me gêne un peu qu'il soit toujours en fonctionnement si la personne ne pense pas à fermer le fichier manuellement.

    0
    1. raplapla
       

      Salut, c'est bien pour cela que je t'ai conseillé de demander sur le forum windows, car, c'est bien par le système d'exploitation que cela doit se gérer.

      0
  7. Vindaloo Messages postés 3 Statut Membre
     

    Salut,

    Ok, merci pour vos conseils.

    Je vais essayer ça.

    0
    1. jee pee Messages postés 9441 Date d'inscription   Statut Modérateur Dernière intervention   9 981
       

      Bonjour,

      Il faudrait voir si lancer le programme via une commande start peut fonctionner.

      Dans un .cmd, si on lance un sous-process par call, le script reste en attente de la fermeture du programme lancé, par contre avec start, le script continue

      call notepad.exe
      pause
      start notepad.exe
      pause
      exit
      
      0