gpt4 book ai didi

python - 将数据从 python 管道传输到外部命令

转载 作者:太空狗 更新时间:2023-10-30 01:16:39 25 4
gpt4 key购买 nike

我已经阅读了 subprocess.Popen 上的所有内容,但我想我遗漏了一些东西。

我需要能够执行一个 unix 程序,该程序从 python 脚本中创建的列表中读取数据流,并将该程序的结果写入文件。在 bash 提示符下,我一直都没有问题地执行此操作,但现在我正尝试从 python 脚本中执行此操作,该脚本会在进入此阶段之前预处理一些二进制文件和大量数据。

让我们看一个不包括所有预处理的简单示例:

import sys
from pylab import *
from subprocess import *
from shlex import split

# some arbitrary x,y points
points = [(11,31),(13,33),(15,37),(16,35),(17,38),(18,39.55)]

commandline = 'my_unix_prog option1 option2 .... > outfile'
command = split(commandline)

process = Popen(command, stdin=PIPE, stdout=PIPE, stderr=PIPE)
print process.communicate(str(points))

这将在 bash 中执行的方式是:

echo "11 31
13 33
15 37
16 35
17 38
18 39.55" | my_unix_prog option1 option2 .... > outfile

数据输入 unix prog 的方式也很重要,我应该将其格式化为由空格分隔的 2 列。

感谢任何帮助...

最佳答案

已解决!

Dhara的帮助下和 xhainingx我能够弄清楚这一点:

import sys
from pylab import *
from subprocess import *
from shlex import split

# some arbitrary x,y points
points = [(11,31),(13,33),(15,37),(16,35),(17,38),(18,39.55)]

commandline = 'my_unix_prog option1 option2 ....'
command = split(commandline)

process = Popen(command, stdin=PIPE, stdout=open('outfile', 'w'), stderr=PIPE)
for p in points:
process.stdin.write(str(p[0]) + ' ' + str(p[1]) + '\n')

print process.communicate()

这很好用,谢谢。

关于python - 将数据从 python 管道传输到外部命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com