-2

私はPythonを初めて使用します。ファイルの結果を次のような変数に格納する、bashコードがあります。

variable=(`cat text`)

これvariableで、の内容がになりtestます。私は次のような呼び出しを使用してPythonで同様のことを試みましたPopen

 subprocess.Popen("variable=(`cat text`)")

しかし、次のようなエラーが発生します。

Traceback (most recent call last):
  File "./push-jenkins", line 5, in <module>
    subprocess.Popen("variable=(`cat text`)")
  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

どこを間違えているのかわからない。

前もって感謝します。

4

2 に答える 2

2

Pythonからbash変数にアクセスすることはできません。代わりに:

variable = subprocess.check_output(['cat', 'text'])

Pythonからファイルを簡単に読み取ることができるため、このコマンドは単なる例であると思います。

の呼び出しcheck_outputは、単一の文字列としてではなく、引数の分割リストとしてコマンドを受け取ることに注意してください。文字列が1つで、手動で分割したくない場合は、次のように実行できます。

variable = subprocess.check_output(['sh', '-c', command])

またはさらに良い:

variable = subprocess.check_output(command, shell=True)

そして、シェルに大変な仕事をさせましょう。

于 2013-01-04T11:49:40.033 に答える
0

ここでパイプを操作する場合は、次のようにすることができます。

import subprocess as subp

proc = subp.Popen(["python", "Test_Pipe.py"], stdout=subp.PIPE, stdin=subp.PIPE)

while True :
    data = proc.stdout.readline() #block / wait
    print data
于 2013-01-04T11:57:55.683 に答える