在包含 30 个 CSV 文件的目录中,运行:
find . -name "*.csv" | (xargs python ~/script.py)
如何让 python 在传递的每个文件上正确运行xargs
?我有print sys.stdin
,它只是一个文件。我尝试for file in stdin
循环,但那里什么都没有。我错过了什么?
事实上 xargs 不会传递给标准输入。它将所有从标准输入读取的内容作为参数传递给您在参数中提供的命令。
您可以使用 echo 调试命令调用:
find . -name "*.csv" | (xargs echo python ./script.py)
您将看到所有文件都输出在一行上。
因此,实际上要从 python 中的参数列表访问您的文件,请在您的脚本中使用它:
import sys
for argument in sys.argv[1:]:
print argument
每个 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`
(“ 可能必须转义,不确定)
编辑:注意 ` 和 ' 之间的区别