IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Commande Dos dans Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 38
    Par défaut Commande Dos dans Python
    Bonjour tout le monde,
    Je m'excuse à l'avance du spam qui va suivre.

    J'ai un petit problème concernant l'exécution une commande dos sous python :

    J'aimerais une liste de tous les dossiers et fichiers sur mon profil windows mais en faisant la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    import os
     
    var = r"C:\users\monpc"
    fichier = r"C:\Users\monpc\Documents\python\fichier2.txt"
    os.system(f"dir /b/s/a- {var} >>{fichier}")
    Dans le fichier de sortie fichier2.txt on voit que le processus marche par contre j'ai des dossiers qui se répètent en boucle comme par exemple :
    C:\users\monpc\AppData\Local\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Application Data\Google\Chrome\User Data\Default\Code Cache\
    1)Je ne comprends pas pourquoi Application Data se répète comme cela. Cela vous dit quelque chose svp?
    2) Je suis ouvert à une autre solution pour faire cette action. Mais j'aimerais bien comprendre pour le premier point...

    Merci par avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Salut,

    Citation Envoyé par Nooboutin Voir le message
    1)Je ne comprends pas pourquoi Application Data se répète comme cela. Cela vous dit quelque chose svp?
    Comparez la sortie avec la même commande DOS exécutée depuis un terminal permettrait déjà de savoir si Python y est (ou pas) pour quelque chose...
    Et s'il n'y est pour rien, c'est que ça vient de votre disque dur...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 38
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Comparez la sortie avec la même commande DOS exécutée depuis un terminal permettrait déjà de savoir si Python y est (ou pas) pour quelque chose...
    Et s'il n'y est pour rien, c'est que ça vient de votre disque dur...

    - W
    Hello wiztricks, déjà merci d'avoir répondu aussi rapidement.
    Oui désolé j'aurais dû le préciser. En passant directement par CMD cela fonctionne parfaitement. J'ai un fichier de sortie qui fait à peine 5Mo. Mais sur python ces répétitions dont j'ai parlé plus haut font grimpé les Mo à plus de 500(et encore je suis obligé kill le script pour pas grimper plus haut..) Du coup le problème vient effectivement de Python...
    As-tu une idée?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 715
    Par défaut
    Salut,

    Essayez de voir si le problème persiste avec subprocess.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 199
    Par défaut
    hello,
    moi je n'ai pas ton problème en lançant la commande sous Python. N'aurais-tu pas un raccourci ou lien parasite dans un des chemins balayés ?
    Il faudrait peut être aussi mettre le fichier de sortie en dehors des répertoires balayés.
    Enfin on ne doit plus dire commande dos mais commande de console Windows. Le dos c'est terminé ! dans tous les O.S windows moderne il n'existe plus .

    Ami calmant, J.P

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2021
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 23
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2021
    Messages : 38
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Même problème avec subprocess. J'ai trouvé d'où venait le problème. Voir message que je vais poster plus bas. Merci en tout cas t'as assuré.

    Citation Envoyé par jurassic pork Voir le message
    Hello jurassic pork (je kiff ton pseudo )
    Pour DOS c'est plus rapide à écrire mdr. J'ai mis le fichier de sortie en dehors des éléments balayés et même problème. C'est pas une histoire de lien parasite car sous CMD pas de problème et sur un autre langage de prog pas de problème non plus. Si c'était un problème de raccourci cela ne fonctionnerait pas en aucun cas je pense.
    J'ai trouvé la solution voir message plus bas. Merci à toi aussi en tout cas d'avoir été force de propositions vraiment.

    Je ne sais pas si c'est normal (j'ai peut-être ma petite idée mais je suis débutant je préfère ne pas dire trop de bêtises) mais en compilant le .py en .exe cela fonctionne parfaitement. Je ne sais pas si c'est à cause d'une histoire de variable d'environnement Comspec ou quoi mais en tout cas tout est ok maintenant...
    Merci encore à tous en tout cas!

  7. #7
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 199
    Par défaut
    hello,
    ce que tu peux essayer c'est ce script (modifier les chemins si nécessaire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import os
    import subprocess
    os.system('cmd.exe /c set > cmdset.txt')
    os.system('set > set.txt')
    var = r"C:\users\lcm"
    fichier1 = r"C:\Users\moni\Documents\python\fichier1.txt"
    fichier2 = r"C:\Users\moni\Documents\python\fichier2.txt"
    fichier3 = r"C:\Users\moni\Documents\python\fichier3.txt"
    os.system(f"dir /b/s/a- {var} > {fichier1}")
    os.system(f'cmd.exe /c "dir /b/s/a- {var}" > {fichier2}')
    with open(fichier3, "w") as outfile:
        subprocess.run(f'cmd.exe /c dir /b/s/a- "{var}" ', stdout=outfile)
    la première commande utilise explicitement l'interpréteur de commande cmd et liste les variables d'environnement dans cmdset.txt
    la deuxième commande utilise directement set et liste les variables d'environnement dans set.txt
    les troisième, quatrième, cinquième commande utilisent dir de différentes manières.
    Chez moi j'ai le même résultat pour les commandes 1 et 2 et les mêmes résultats pour les commandes 3,4 et 5.
    Attention aussi à l'encodage des fichiers de sortie (surtout à cause des caractères accentués). Les commandes vont sortir des fichiers avec l'encodage en cours de la console windows. Chez moi c'est OEM850 . Je ne sais pas comment tu vas exploiter tes fichiers txt mais l'OEM850 ce n'est pas de l'ANSI ou de l'UTF8.

    Ami calmant, J.P

Discussions similaires

  1. [Python 2.X] Utiliser commande dos avec python sur un executable dans dossier script
    Par Schamm dans le forum Général Python
    Réponses: 7
    Dernier message: 21/07/2016, 11h47
  2. Réponses: 4
    Dernier message: 20/04/2011, 11h20
  3. Réponses: 3
    Dernier message: 22/10/2004, 12h04
  4. [TP]Peut-on mettre un commande dos dans le prog?
    Par pierre olmes dans le forum Turbo Pascal
    Réponses: 22
    Dernier message: 24/05/2003, 22h28
  5. [langage] Commande DOS dans un programme
    Par Jibees dans le forum Langage
    Réponses: 15
    Dernier message: 23/04/2003, 12h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo