相关疑难解决方法(0)

如何使用subprocess.Popen通过管道连接多个进程?

如何使用Python subprocess模块执行以下shell命令?

echo "input data" | awk -f script.awk | sort > outfile.txt
Run Code Online (Sandbox Code Playgroud)

输入数据将来自一个字符串,所以我实际上并不需要echo.我已经走到这一步了,任何人都可以解释我是如何通过它来解决的sort吗?

p_awk = subprocess.Popen(["awk","-f","script.awk"],
                          stdin=subprocess.PIPE,
                          stdout=file("outfile.txt", "w"))
p_awk.communicate( "input data" )
Run Code Online (Sandbox Code Playgroud)

更新:请注意,虽然下面接受的答案实际上没有回答问题,但我相信S.Lott是对的,最好避免首先解决这个问题!

python subprocess pipe

52
推荐指数
4
解决办法
5万
查看次数

在Python中使用管道执行shell命令

我是Python新手,尝试过谷歌搜索,但没有帮助..
我需要在管道中调用此类命令(从mailq获取最旧的待处理邮件):

mailq |grep "^[A-F0-9]" |sort -k5n -k6n |head -n 1
Run Code Online (Sandbox Code Playgroud)

该命令在 shell 中运行。

在Python中我写了以下内容:

 p = subprocess.Popen( 'mailq |grep \"^[A-F0-9]\" |sort -k5n -k6n |head -n 1', shell=True,
                         stdin=subprocess.PIPE,
                         stdout=subprocess.PIPE,
                         stderr=subprocess.STDOUT)
 response = p.communicate()[0]
Run Code Online (Sandbox Code Playgroud)

但我得到这样的输出:

排序: 写入失败: 标准输出: 管道损坏\n排序: 写入错误\n

想知道是什么导致了这样的错误?

python stdout pipe mail-queue

3
推荐指数
1
解决办法
7607
查看次数

标签 统计

pipe ×2

python ×2

mail-queue ×1

stdout ×1

subprocess ×1