将正则表达式参数转换为列表

时间:2009-09-16 09:34:25

标签: python regex

问候,

脚本正在处理一个或多个文件。我想将文件名(带有正则表达式)作为参数传递并将它们放在列表中。最好的方法是什么?

例如,我接受以下论点:

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]

2 个答案:

答案 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下),因此它不会为您展开它。 : - )