我正在使用 zbarimg 来扫描条形码,我想将输出重定向到python脚本。如何重定向以下命令的输出:
zbarimg code.png
到python脚本,脚本应该是什么样的?
我尝试了以下脚本:
#!/usr/local/bin/python
s = raw_input()
print s
我通过发出以下内容使其成为可执行文件:
chmod +x in.py
比我运行以下内容:
zbarimg code.png | in.py
我知道这是错的,但我无法弄清楚其他任何事情!
答案 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))