2017-09-18 4 views
0

J'essaie de trouver toutes les VM en cours d'exécution en utilisant "vmrun list" commande et je veux la sortie dans le fichier texte.os.system (cmd/all> fichier) donne un fichier vide, si je lance la commande directement dans l'invite de commande Je reçois la sortie au fichier texte

import os 
os.system("C:\\Program\ Files\ (x86)\\VMware\VMware\ VIX\\vmrun /all >C:\\Users\\xyz\\Documents\\qw.txt ") 

Quand je lance la même commande dans l'invite de commande je reçois un fichier avec la commande de sortie rapide, mais quand je fais la même chose en python je reçois un fichier vide. Que puis-je faire pour obtenir la sortie du fichier à partir du script python?

+2

Je me demande si cette commande est exécutée sous une portée d'utilisateur différente lorsque vous l'exécutez à la main par le code – workabyte

+0

merci d'avoir changé le répertoire de travail en cours au répertoire VIX et cela fonctionne. –

+0

Par défaut ['system'] (https://docs.python.org/2/library/os.html#os.system) utilise la commande' cmd.exe/c'. Apparemment, vous n'avez pas lu la documentation sur la façon dont 'cmd/c' [gère les citations] (https://ss64.com/nt/syntax-cmd.html). Enveloppez la ligne de commande entière dans un ensemble supplémentaire de guillemets doubles. Ou passez la chaîne de commande (pas une liste) à 'subprocess.call' avec' shell = True', ou utilisez 'subprocess.check_output' et écrivez le fichier vous-même. – eryksun

Répondre

1

Vous devriez jeter un coup d'œil sur le module de sous-processus, par l'exemple de commande getoutput.