0

在包含 30 个 CSV 文件的目录中,运行:

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

如何让 python 在传递的每个文件上正确运行xargs?我有print sys.stdin,它只是一个文件。我尝试for file in stdin循环,但那里什么都没有。我错过了什么?

4

2 回答 2

3

事实上 xargs 不会传递给标准输入。它将所有从标准输入读取的内容作为参数传递给您在参数中提供的命令。

您可以使用 echo 调试命令调用:

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

您将看到所有文件都输出在一行上。

因此,实际上要从 python 中的参数列表访问您的文件,请在您的脚本中使用它:

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

每个 csv 文件只运行一次 script.py

python ~/script.py file1.csv
python ~/script.py file2.csv
python ~/script.py file3.csv
python ~/script.py file4.csv

ETC

如果你想像这样运行它

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 回答