Sous-processus module ne parvient pas à exécuter la commande

Je suis en train d'exécuter Google cpplint.py sur un groupe de mes fichiers et de récupérer les résultats dans un fichier journal. Cependant, je n'ai pas réussi à battre le sous-processus module. Mon code est ici:

import os, subprocess

rootdir = "C:/users/me/Documents/dev/"
srcdir = "project/src/"

with open(rootdir+srcdir+"log.txt", mode='w', encoding='utf-8') as logfile:
    for subdir, dirs, files in os.walk(rootdir+srcdir):
        for file in files:
            if file.endswith(".h") or file.endswith(".cpp"):
                filewithpath=os.path.join(subdir, file)
                cmd=['c:/Python27/python.exe','C:/users/me/Documents/dev/cpplint.py','--filter=-whitespace,-legal,-build/include,-build/header_guard/', filewithpath]               
                output = subprocess.check_output(cmd)
                logfile.write(output.decode('ascii'))

Essayez d'exécuter le code ci-dessus renvoie une erreur:

  File "C:\Python32\lib\site.py", line 159
    file=sys.stderr)
        ^ SyntaxError: invalid syntax Traceback (most recent call last):   File "C:\Users\me\Documents\dev\project\src\verifier.py", line 19, in <module>
    output = subprocess.check_output(cmd)   File "C:\Python32\lib\subprocess.py", line 511, in check_output
    raise CalledProcessError(retcode, cmd, output=output) subprocess.CalledProcessError: Command '['c:/Python27/python.exe', 'C:/users/me/Documents/dev/cpplint.py', '--filter=-whitespace,-legal,-build/include,-build/header_guard/', 'C:/users/me/Documents/dev/project/src/aboutdialog.cpp']' returned non-zero exit status 1

Si je remplacer le cmd avec quelque chose de plus simple comme:

cmd=['C:/WinAVR-20100110/bin/avr-gcc.exe','--version']

Ensuite le script fonctionne comme prévu.

J'ai aussi essayé d'utiliser une chaîne de commande unique au lieu d'une liste de chaînes de caractères comme des cmd, mais le résultat est le même.
Lors du débogage du code, j'ai copié la liste-des-cordes-tourner-dans-la-ligne de commande-commande à partir du débogueur et il a couru dans la ligne de commande de Windows, et la commande a fonctionné comme prévu.

L'interpréteur Python exécute mon script Python 3.2.
Des conseils sont grandement appréciés.

êtes-vous en utilisant le drapeau shell=True lors de l'utilisation de la chaîne de commande unique?
Le résultat est le même, si j'utilise le shell=True, shell=False ou de ne pas le définir.
Je me demande si cette façon d'utiliser un Python 2.6 interprète est bon ou pas. À l'aide de subprocess est sûr un moyen de sélectionner la version, mais y aurait-il une autre façon d'accéder aux fonctions de ce module Python?
La chose intéressante est que la site.py module, que l'original SyntaxError se réfère, traite de l'importation de paquets, ce qui est drôle d'endroit pour une rencontre une erreur de ce genre.
Est l'utilisation de mélanges de versions de python (cmd=['c:/Python27/python.exe' ...) à l'origine du problème? Quand je l'ai couru avec un mannequin cpplint.py (qui se contente d'afficher "bonjour"), il n'a pas obtenir un SyntaxError, il s'est juste arrêté avec "en retour non nul de sortie d'état 2".

OriginalL'auteur Manjabes | 2011-10-25