2011-04-25 46 views
0

與30個CSV文件的目錄,運行讀取文件:xargs的,蟒蛇,從標準

find . -name "*.csv" | (xargs python ~/script.py) 

我怎樣纔能有正確的Python通過xargs傳遞的每個文件運行?我print sys.stdin,它只是一個文件。我嘗試for file in stdin循環,但沒有什麼。我錯過了什麼?

+0

回答我的問題。 'fileinput'模塊是你想要的地方:http://docs.python.org/library/fileinput.html – Wells 2011-04-25 00:16:05

+0

在你的Python腳本中使用fileinput,你不必使用任何shell命令。 – ghostdog74 2011-04-25 00:18:09

回答

1

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` 

(以下簡稱「可能要逃跑,不知道)

編輯:注意之間的區別`和'

3

其實xargs的不傳遞到標準輸入。它將所有從標準輸入讀取的參數作爲參數傳遞給您在參數中給出的命令。

可以帶有回聲調試命令invokation:

find . -name "*.csv" | (xargs echo python ./script.py) 

你會看到outputed在一行中的所有文件。

所以其實從參數列表,訪問您的文件在Python中使用這個在您的腳本:

import sys 
for argument in sys.argv[1:]: 
    print argument