5

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

zbarimg code.png

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

我尝试了以下脚本:

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

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

chmod +x in.py

比我跑了以下:

zbarimg code.png | in.py

我知道这是错的,但我想不出别的!

4

3 回答 3

4

用于sys.stdin从 python 脚本中的标准输入读取。例如:

import sys
data = sys.stdin.readlines()
于 2013-04-10T15:34:35.553 回答
3

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

您可能需要明确指定 python 脚本的路径,如

zbarimg code.png | ./in.py

正如@dogbane 所说,从标准输入中读取sys.stdin.readlines()比使用更好raw_input

于 2013-04-10T15:35:43.610 回答
2

我不得不调用 python 程序命令 somecommand | python mypythonscript.py而不是somecommand | ./mypythonscript.py. 这对我有用。后者产生错误。

soxi -D *mp3 我的目的:通过管道输出到 python来总结所有 mp3 文件的持续时间: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))
于 2015-01-09T22:01:10.713 回答