比如,用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的對象,返回一個列表
真是越寫越興♂奮~