比如,用shell语言表述一下:ls . |grep .mp3
当然你可以import glob,然后glob.glob(“*.mp3”)
- 使用 fnmatch
看官方文档给出的例子
1 2 3 4 |
import fnmatch,os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.mp3'): print file |
- 使用迭代器
1 |
files = [f for f in os.listdir('.') if re.match(r'[0-9]+.*\.mp3', f)] |
也很清楚,但不够geek
另外,这里还提到了用os.walk遍历的例子:http://stackoverflow.com/questions/2225564/python-get-a-filtered-list-of-files-in-directory
- 使用filter
这也是我见过的最“python”的写法了
1 |
files=filter(lambda x: x.endswith('.mp3'), os.listdir(working_dir)) |
filter第一个参数目测只能用lambda写,因为需要一个现场callable的对象,返回一个列表
真是越写越兴♂奋~