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