Comment exécuter une commande d’invite de commande à partir de python

J’ai essayé quelque chose comme ça, mais sans effet:

command = "cmd.exe" proc = subprocess.Popen(command, stdin = subprocess.PIPE, stdout = subprocess.PIPE) proc.stdin.write("dir c:\\") 

Vous voulez probablement essayer quelque chose comme ça:

command = "cmd.exe /C dir C:\\"

Je ne pense pas que vous pouvez insérer dans cmd.exe … Si vous venez d’un arrière-plan Unix, eh bien, cmd.exe a des verrues laides!

EDIT: Selon Sven Marnach, vous pouvez accéder à cmd.exe . J’ai essayé de suivre dans un shell python:

 >>> import subprocess >>> proc = subprocess.Popen('cmd.exe', stdin = subprocess.PIPE, stdout = subprocess.PIPE) >>> stdout, stderr = proc.communicate('dir c:\\') >>> stdout 'Microsoft Windows [Version 6.1.7600]\r\nCopyright (c) 2009 Microsoft Corporatio n. All rights reserved.\r\n\r\nC:\\Python25>More? ' 

Comme vous pouvez le voir, vous avez encore un peu de travail à faire (seule la première ligne est renvoyée), mais vous pourrez peut-être faire fonctionner ceci …

que diriez-vous simplement:

 import os os.system('dir c:\\') 

Essayez d’append un appel à proc.stdin.flush() après avoir écrit sur le tube et voyez si les choses se comportent mieux que prévu. En vidant explicitement le canal, vous n’avez pas à vous soucier de la configuration exacte de la mise en mémoire tampon.

De plus, n’oubliez pas d’inclure un "\n" à la fin de votre commande ou votre shell enfant restra assis à l’invite en attendant l’achèvement de l’entrée de commande.

J’ai écrit à propos de l’utilisation de Popen pour manipuler plus en détail une instance de shell externe en exécutant trois commandes dans le même processus avec Python.

Comme dans le cas de cette question, cette astuce peut être utile si vous devez maintenir l’état du shell à travers plusieurs invocations hors processus sur une machine Windows.

Essayer:

 import os os.popen("Your command here") 

Pourquoi voulez-vous appeler cmd.exe ? cmd.exe est une ligne de commande (shell). Si vous voulez changer de répertoire, utilisez os.chdir("C:\\") . Essayez de ne pas appeler des commandes externes si Python peut le fournir. En fait, la plupart des commandes du système d’exploitation sont fournies via le module os (et sys). Je vous suggère de consulter la documentation du module os pour voir les différentes méthodes disponibles.