1

私は bash でコマンドを実行するコードを持っています (各 bash コマンドは関数の python スクリプトを実行します)。スクリプトが正常に実行されたかどうかを確認したいと思います。コードは次のとおりです。

    for command in command_list:
        if subprocess_cmd(command):
            print "success"
        else:
            print "fail"

def subprocess_cmd(command):
    process = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
    proc_stdout = process.communicate()[0].strip()  

すべてが正常に実行されていても、これは常に印刷に失敗します。私がやっていることは理にかなっていますか? どうすればいいですか?

編集: answer は popen の returncode 属性です。

4

1 に答える 1

1

これは、関数subprocess_cmmが何も返さないためです。デフォルトNoneでは、Falsy値である が返されます。

関数のデフォルトの戻り値は常にNoneです。

>>> def func():
...     pass
>>> print func()
None

アップデート:

import shlex
for command in command_list:
   try:
       out = subprocess.check_output(shlex.split(command))
       print out
   except CalledProcessError:
       print "fail"
于 2013-07-12T10:12:30.260 に答える