我希望脚本在其上运行的目录中有不计其数的文件。它们都有一个文件名,如:prefix_foo_123456_asdf_asdfasdf.csv。我知道如何在 shell 中使用文件名中的变量而不是 python 循环访问目录中的文件。是否有相应的方法来做类似的事情
$i=0
for $i<100
./process.py prefix_foo_$i_*
$i++
endloop
请您参考如下方法:
您可以使用 glob.glob 或 glob.iglob 获取文件名列表/迭代器。
例如如果你的目录有 "file1.txt","file2.txt","file3.txt"
import glob
print (glob.glob('*.txt')) #['file1.txt','file2.txt','file3.txt']
虽然列表不一定是排序的。
你的循环可以写成:
import subprocess
import glob
for i in range(100):
files=glob.glob('prefix_foo_%d_*'%(i))
subprocess.call(['./process.py']+files)
当然,在 python 中使用子进程来运行另一个 python 程序可能不是最好的设计...(您可能可以从另一个模块导入您需要的东西并运行它而不产生另一个进程)
