问候,
脚本正在处理一个或多个文件。我想将文件名(带有正则表达式)作为参数传递并将它们放在列表中。最好的方法是什么?
例如,我接受以下论点:
script.py file[1-3].nc #would create list [file1.nc, file2.nc, file3.nc] that I can work on
script.py file*.nc #would scan the folder for matching patterns and create a list
script.py file1.nc file15.nc booba[1-2].nc #creates [file1.nc, file15.nc, booba1.nc, booba2.nc]
答案 0 :(得分:4)
glob模块正是您正在寻找的
检查示例:
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
您可以使用optparse或只使用sys.argv来获取参数。并将它们传递给glob。
答案 1 :(得分:1)
更新: 在Unix下,shell将执行您想要的示例扩展。 在Windows下它不会,然后你需要使用glob.glob()。
但如果你真的做想要regexp:那么你只需要列出目录,使用listdir,并将文件名与regexp模式匹配。您还必须在引号中传递参数(至少在unix下),因此它不会为您展开它。 : - )