Мне нужно выбрать все файлы в каталоге в то время, когда у вас есть y2001, y2002 и y2003 в середине имени файла. Как я могу?выберите несколько файлов, используя glob в python
import glob
files = glob.glob('*y2001*.jpg')
Мне нужно выбрать все файлы в каталоге в то время, когда у вас есть y2001, y2002 и y2003 в середине имени файла. Как я могу?выберите несколько файлов, используя glob в python
import glob
files = glob.glob('*y2001*.jpg')
Вы можете сделать это с
import glob
files = glob.glob('*y200[123]*.jpg')
Для подробной справки см http://docs.python.org/2/library/glob.html
Вот излишеством метод решения проблемы.
import os
import re
import functools
def validate_file(validators, file_path):
return any(re.search(validator, file_path) for validator in validators)
def get_matching_files_in_dir(directory, validator, append_dir=True):
for file_path in os.listdir(directory):
if validator(file_path):
yield os.path.join(directory, file_path) if append_dir else file_path
# define your needs:
matching_patterns = ['y2001', 'y2002', 'y2003']
validator = functools.partial(validate_file, matching_patterns)
# usage
list(get_matching_files_in_dir('YOUR DIR', validator))
Пример:
>>> matching_patterns = ['README']
>>> validator = functools.partial(validate_file, matching_patterns)
>>> print list(get_matching_files_in_dir('C:\\python27', validator))
['C:\\python27\\README.txt']
http://docs.python.org/2/library/fnmatch.html –