2010-09-16 6 views
0

Je voudrais savoir comment je pourrais exécuter une commande sans afficher la fenêtre cmd. Mon code est en Python et aux États-Unis. est Windows7.Python: Exécuter une commande dans un sous-shell sans interface cmd ou caché ou en arrière-plan

La ligne problématique est: os.system(pathandarguments)

Le programme fonctionne très bien, exécutez le chemin donné avec les arguments, mais je perds le contrôle de mon programme parce que ma fenêtre de programme réduit, je vois la fenêtre cmd quelques secondes puis mon programme de fenêtre ne maximise pas.

Je veux exécuter la chaîne pathandarguments sans minimiser ma fenêtre principale. Je préfère, si c'est possible, ne montre pas la fenêtre cmd. J'ai essayé différentes manières de faire ceci:

os.system(pathandarguments) = fonctionne bien mais minimise la fenêtre de mon programme.

os.popen(pathandarguments) = ERROR: CThread::staticThread : Access violation at 0x77498c19: Writing location 0x00000014 (Ne pas travailler)

subprocess.Popen([pathandarguments], shell=False) = Exception dans onAction de script python (Ne fonctionne pas)

Merci à l'avance.

EDIT @martineau, le problème est pas que je ne peux pas des processus d'importation, la révision du journal de mon application, j'ai vu le problème est avec le processus d'importation à la ligne 146:

13:42:20 T:4116 M:2156859392 NOTICE: import win32api 
13:42:20 T:4116 M:2156859392 NOTICE: ImportError 
13:42:20 T:4116 M:2156859392 NOTICE: : 
13:42:20 T:4116 M:2156859392 NOTICE: No module named win32api 

Je n'ai pas le module win32api.

+0

Le shell = False est probablement le plus proche, mais que voulez-vous dire par le script onAction de python? – Mark

+0

J'ai aussi essayé: subprocess.Popen ([sacarThumb], shell = True) = Le programme ne fait rien. Mon script python a un bouton et, quand je clique sur le bouton, exécute le code de la fonction qui a la ligne os.system (pathandarguments) ou os.system (pathandarguments) ou subprocess.Popen ([pathandarguments], shell = False). .. – GerarLM

+0

@ Sam888: L'OP ne dit rien d'essayer d'exécuter un script Python sans une fenêtre cmd apparaissant ... qui est ce que le lien que vous avez fourni est tout au sujet. – martineau

Répondre

1

Pendant longtemps, j'ai utilisé un module Python open source pour le contrôle de processus appelé process-python. Le statut du projet là-bas indique "Dans son état actuel, il a été largement utilisé dans le projet commercial Komodo IDE." Il s'agit d'une multiplateforme, mais l'une des principales raisons pour lesquelles j'ai commencé à l'utiliser était que Windows produirait un processus sans fenêtre de console. C'est très simple à utiliser. Voici un exemple trivial:

import process 

p = process.ProcessOpen([eventfilepath]) # open text file with associated program 
ignored_exitstatus = p.wait() 

Espérons que cela aide.

Questions connexes