将bash输出重定向到python脚本

时间:2013-04-10 15:30:55

标签: python bash

我正在使用 zbarimg 来扫描条形码,我想将输出重定向到python脚本。如何重定向以下命令的输出:

zbarimg code.png

到python脚本,脚本应该是什么样的?

我尝试了以下脚本:

#!/usr/local/bin/python
s = raw_input()
print s

我通过发出以下内容使其成为可执行文件:

chmod +x in.py

比我运行以下内容:

zbarimg code.png | in.py

我知道这是错的,但我无法弄清楚其他任何事情!

3 个答案:

答案 0 :(得分:3)

使用sys.stdin从python脚本中的stdin读取。例如:

import sys
data = sys.stdin.readlines()

答案 1 :(得分:2)

实际上,使用命令中的管道运算符|是正确的。它不起作用吗?

您可能需要在

中明确指定python脚本的路径
zbarimg code.png | ./in.py

正如@dogbane所说,从sys.stdin.readlines()这样的stdin读取比使用raw_input更好

答案 2 :(得分:1)

我必须调用python程序命令 somecommand | python mypythonscript.py代替somecommand | ./mypythonscript.py。这对我有用。后者产生错误。

我的目的:通过管道输出soxi -D *mp3来总结所有mp3文件的持续时间 到python:soxi -D *mp3 | python sum_durations.py


详细说明:

soxi -D *mp3生产:

122.473016
139.533016
128.456009
307.802993
...

sum_durations.py脚本:

import sys
import math
data = sys.stdin.readlines()
#print(data)
sum = 0.0
for line in data:
    #print(line)
    sum += float(line)

mins = math.floor(sum / 60)
secs = math.floor(sum) % 60

print("total duration: " + str(mins) + ":" + str(secs))