我试图在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/

10-14 06:07