2014-01-06 23 views
0

我必須選擇文件名中間有y2001,y2002和y2003的目錄中的所有文件。我怎麼能夠?在Python中使用glob選擇多個文件

import glob 
files = glob.glob('*y2001*.jpg') 
+0

http://docs.python.org/2/library/fnmatch.html –

回答

2

您可以

import glob 
files = glob.glob('*y200[123]*.jpg') 

做到這一點獲得進一步的參考看到http://docs.python.org/2/library/glob.html

+0

感謝順便說一句如何分別y2001,y2002,y2003餵它們。尋找替代品.. – 2964502

+0

@viena沒有必要分開餵養他們。 –

+0

@ Ashwini Chaudhary請給我另類像y2001和y2002和y2003 – 2964502

2

這裏是一個解決您的問題矯枉過正的方法。

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']