簡體   English   中英

將bash輸出重定向到python腳本

[英]Redirect bash output to python script

我使用zbarimg掃描條形碼,我想將輸出重定向到python腳本。 如何重定向以下命令的輸出:

zbarimg code.png

到一個python腳本,腳本應該是什么樣的?

我嘗試了以下腳本:

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

我通過發出以下內容使其成為可執行文件:

chmod +x in.py

比我跑了以下:

zbarimg code.png | in.py

我知道這是錯的,但我無法弄清楚其他任何事情!

使用sys.stdin從python腳本中的stdin讀取。 例如:

import sys
data = sys.stdin.readlines()

使用管道運算符| 從命令是正確的,實際上。 它不起作用了嗎?

您可能需要顯式指定python腳本的路徑,如

zbarimg code.png | ./in.py

正如@dogbane所說,從stdin那樣讀取sys.stdin.readlines()比使用raw_input更好

我必須調用python程序命令作為somecommand | python mypythonscript.py somecommand | python mypythonscript.py而不是somecommand | ./mypythonscript.py somecommand | ./mypythonscript.py 這對我有用。 后者產生了錯誤。

我的目的:通過將soxi -D *mp3輸出輸出到python來總結所有mp3文件的持續時間: soxi -D *mp3 | python sum_durations.py 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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM