Приведение аргументов регулярных выражений в список - PullRequest
1 голос
/ 16 сентября 2009

Привет,

Скрипт работает с одним или несколькими файлами. Я хочу передать имена файлов (с регулярным выражением в них) в качестве аргументов и поместить их в список. Каков наилучший способ сделать это?

Например, я бы принял следующие аргументы:

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 ]

4 голосов
/ 16 сентября 2009

Модуль 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 для получения аргументов. И передайте их Глобу.

1 голос
/ 16 сентября 2009

Обновлено: Под Unix оболочка будет делать примеры расширений, которые вы хотите. Под Windows это не так, и тогда вам нужно использовать glob.glob ().

Но если вы действительно делаете хотите регулярное выражение: тогда вам просто нужно перечислить каталог с помощью listdir и сопоставить имена файлов с шаблоном регулярного выражения. Вам также нужно будет передать параметр в кавычках (по крайней мере, в Unix), чтобы он не расширил его для вас. : -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...