我试图在linux bash中使用数据流信号“但是,此应用程序不会从文件接收其输入。
我用这个:
#the application do not receives data stream from file
command = './grid < /home/felipe/Documents/proteins/grid.in'.split(' ')
p = subprocess.Popen(command,stdout=subprocess.PIPE)
但它不工作,例如os.system(),它完成了我想对子流程执行的操作:
#works
command = './grid < /home/felipe/Documents/proteins/grid.in'.split(' ')
os.system(command)
如何将数据流信号“
最佳答案
如果您只想使用python作为shell包装器,那么必须使用shell=True
启动(子)进程。但是,由于您已经在使用python,您可能希望更多地依赖python,更少地依赖shell,因此可以执行以下操作:
with open('/home/felipe/Documents/proteins/grid.in') as in_file:
p = subprocess.Popen('./grid', stdin=in_file)
这将以
in_file
的形式打开输入文件,并像shell重定向那样将其馈送到./grid
的标准输入中。关于python - 如何在Python中使用带有子进程的bash数据流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54290617/