1

Python ドキュメントhttp://docs.python.org/2/library/subprocess.htmlから

Pythonで次のように入力すると

>>> subprocess.call(["ls", "-l"])

私は0を取得します。

Pythonで次のように入力すると、

>>> subprocess.call("exit 1", shell=True)

1 を取得します。ただし、入力すると

>>> subprocess.call("exit 1")

エラーが表示されます

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 493, in call
    return Popen(*popenargs, **kwargs).wait()
  File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

なぜこれが起こるのですか?

2 番目の質問は、lsクラッシュした場合、次のコマンドを使用してゼロ以外の戻り値を取得できますか?

>>> subprocess.call(["ls", "-l"])
4

2 に答える 2

0

exitシェル ルーチンであり、実際のプログラムではありません。呼び出しで という名前のプログラムが見つからないため、エラーが発生しますexitshell 引数をこれに設定しないTrue と、実行しても意味がありません。

2 番目の質問に答えるには、はい、ゼロ以外の戻り値が返されます。読み取り権限のないディレクトリを一覧表示してみてください。

于 2013-05-03T13:39:03.157 に答える
0

これはshell=True、コマンドがシェルを介して実行されるためです。シェルのようにコマンドラインを渡すことができます。そのパラメーターを省略すると、最初のパラメーターはコマンドのファイル名であるファイル名として脅かされます。そして命令はない'exit 1'

ls -alコマンドを使用した別の例を次に示します。

import subprocess

subprocess.call("ls -al", shell=True) # works
subprocess.call("ls -al") # fails

に関する@ ibi0tuxの回答にも注意してくださいexit

于 2013-05-03T13:40:22.167 に答える