與30個CSV文件的目錄,運行讀取文件:xargs的,蟒蛇,從標準
find . -name "*.csv" | (xargs python ~/script.py)
我怎樣纔能有正確的Python通過xargs
傳遞的每個文件運行?我print sys.stdin
,它只是一個文件。我嘗試for file in stdin
循環,但沒有什麼。我錯過了什麼?
與30個CSV文件的目錄,運行讀取文件:xargs的,蟒蛇,從標準
find . -name "*.csv" | (xargs python ~/script.py)
我怎樣纔能有正確的Python通過xargs
傳遞的每個文件運行?我print sys.stdin
,它只是一個文件。我嘗試for file in stdin
循環,但沒有什麼。我錯過了什麼?
script.py正在爲每個csv文件
python ~/script.py file1.csv
python ~/script.py file2.csv
python ~/script.py file3.csv
python ~/script.py file4.csv
等剛好運行一次
如果要像
python ~/script.py file1.csv file2.csv file3.csv
然後做
python ~/script.py `find . -name "*.csv"`
運行
或
python ~/script.py `ls *.csv`
(以下簡稱「可能要逃跑,不知道)
編輯:注意之間的區別`和'
其實xargs的不傳遞到標準輸入。它將所有從標準輸入讀取的參數作爲參數傳遞給您在參數中給出的命令。
可以帶有回聲調試命令invokation:
find . -name "*.csv" | (xargs echo python ./script.py)
你會看到outputed在一行中的所有文件。
所以其實從參數列表,訪問您的文件在Python中使用這個在您的腳本:
import sys
for argument in sys.argv[1:]:
print argument
回答我的問題。 'fileinput'模塊是你想要的地方:http://docs.python.org/library/fileinput.html – Wells 2011-04-25 00:16:05
在你的Python腳本中使用fileinput,你不必使用任何shell命令。 – ghostdog74 2011-04-25 00:18:09