0

30 個の CSV ファイルを含むディレクトリで、次を実行します。

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

渡された各ファイルでPythonを適切に実行するにはどうすればよいxargsですか? 私はそうしますprint sys.stdin、そしてそれはただの1つのファイルです。for file in stdinループしてみますが、何もありません。私は何が欠けていますか?

4

2 に答える 2

3

実際、xargs は stdin に渡されません。stdin からのすべての読み取りを引数として、パラメーターで指定したコマンドに渡します。

エコーを使用してコマンド呼び出しをデバッグできます。

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

すべてのファイルが 1 行に出力されます。

実際、Python で引数リストからファイルにアクセスするには、スクリプトでこれを使用します。

import sys
for argument in sys.argv[1:]:
    print argument
于 2011-04-25T03:08:39.413 に答える
1

script.pyは、csvファイルごとに1回だけ実行されます

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`

(「エスケープする必要があるかもしれませんが、確かではありません)

編集:`と'の違いに注意してください

于 2011-04-25T00:18:27.260 に答える