30 個の CSV ファイルを含むディレクトリで、次を実行します。
find . -name "*.csv" | (xargs python ~/script.py)
渡された各ファイルでPythonを適切に実行するにはどうすればよいxargs
ですか? 私はそうしますprint sys.stdin
、そしてそれはただの1つのファイルです。for file in stdin
ループしてみますが、何もありません。私は何が欠けていますか?
実際、xargs は stdin に渡されません。stdin からのすべての読み取りを引数として、パラメーターで指定したコマンドに渡します。
エコーを使用してコマンド呼び出しをデバッグできます。
find . -name "*.csv" | (xargs echo python ./script.py)
すべてのファイルが 1 行に出力されます。
実際、Python で引数リストからファイルにアクセスするには、スクリプトでこれを使用します。
import sys
for argument in sys.argv[1:]:
print argument
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`
(「エスケープする必要があるかもしれませんが、確かではありません)
編集:`と'の違いに注意してください