-2

我对 python 很陌生,我有一个 bash 代码,它将文件的结果存储到一个像这样的变量中:

variable=(`cat text`)

现在variabletest. 我在 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将命令接收为参数的拆分列表,而不是单个字符串。如果您有一个字符串并且不想手动拆分,您可以执行以下操作:

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 回答