我是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
不知道我在哪里弄错了。
提前致谢。
答案 0 :(得分: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)
让shell努力工作。
答案 1 :(得分: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