Python 2.7.3 processus.Popen() échecs

Je suis à l'aide de python 2.7.3 sur un Windows 7 64-bit la machine (également dans le développement de Linux 32 bits, Ubuntu 12.04) et suis bizarre des difficultés à obtenir python pour communiquer avec l'invite de commande/terminal avec succès. Mon code ressemble à ceci:

import subprocess, logging, platform, ctypes

class someClass (object):

def runTerminalCommand:

    try:
        terminalOrCmdLineCommand = self.toString()

        process = subprocess.Popen(terminalOrCmdLineCommand, shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
        output = process.stdout.readlines()

        if len(output) < 1:
            logging.exception("{} error : {}".format(self.cmd,process.stderr.readlines()))
            raise ConfigError("cmd issue : {}".format(self.cmd))
        return output

    except ValueError as err:
        raise err
    except Exception as e:
        logging.exception("Unexpected error : " + e.message)
        raise ConfigError("unexpected error")

Maintenant, je sais que l'auto.toString() valeur renvoyée sera de traiter correctement si je l'entrer à la main, je vais donc me limiter à un problème avec la façon dont je suis l'envoi à la ligne de commande via le processus secondaire. J'ai lu la documentation, et a constaté que le processus secondaire.check_call() ne retourne rien, s'il rencontre une erreur, donc je suis en utilisant .Popen()

L'exception que je reçois est,

    [date & time] ERROR: Unexpected error :
    Traceback (most recent call last):
      File "C:\[...]"
        raise ConfigError("cmd issue : {}".format(self.cmd))
    "ConfigError: cmd issue : [the list self.cmd printed out]"

Ce que j'ESSAIE de faire, c'est exécuter une commande, et de lire l'entrée arrière. Mais il me semble être incapable d'automatiser l'appel, je veux courir. 🙁

Toute pensée? (s'il vous plaît laissez-moi savoir si il y a tout les détails nécessaires j'ai laissé de côté)

Beaucoup apprécié, à l'avance.

votre code n'est pas valide Python: def runTerminalCommand:
J'ai donc pensé qu'il pourrait être parce que le processus de l'enfant est en cours d'exécution en parallèle au processus parent--mais il n'est pas. Lorsque j'appelle le processus.wait() avant de l'assigner en sortie une valeur, j'ai le même problème. Lorsque j'essaie de commenter le code: "processus = sous-processus.Popen(terminalOrCmdLineCommand, shell=True,stdout=sous-processus.PIPE,stderr=sous-processus.PIPE)" et son remplacement par "processus = sous-processus.check_call(de soi.cmd)" il me dit un de mes drapeaux a un paramètre non valide après. Puis il énumère les paramètres autorisés, dont l'un est celui que j'ai utilisé... Encore passer au crible de l'API

OriginalL'auteur LastTigerEyes | 2012-10-03