startswith()
和 endswith()
方法提供了一個非常方便的方式去做字符串開頭和結尾的檢查。
1、查看指定目錄下的所有文件名
>>> import os >>> filenames = os.listdir('I:\PythonTest') >>> filenames ['111.csv', '111.xlsx', '111.xml', '123.txt', '123.xlsx', '123123.xml', '123123.xml.bak', '1234.txt', '222.xml', 'book.xml', 'book.xml.bak', 'excelWrite.csv', 'excelWrite.xlsx', 'Koala.jpg', 'movie.xml', 'movie.xml.bak', 'movies.xml', 'receive.txt', 'user.xml', 'user.xml.bak', '新建文件夾']
2、列出.txt文件名
>>> for i in filenames: if i.endswith('.txt'): print(i) 123.txt 1234.txt receive.txt
另外一種寫法:
>>> i for i in filenames if i.endswith('.txt') SyntaxError: invalid syntax >>> [i for i in filenames if i.endswith('.txt')] #結果返回一個list[] ['123.txt', '1234.txt', 'receive.txt'] >>> a = [i for i in filenames if i.endswith('.txt')] >>> print(a) ['123.txt', '1234.txt', 'receive.txt']
3、同時列出.txt和.xml文件
如果你想檢查多種匹配可能,只需要將所有的匹配項放入到一個元組(‘a’,’b’,’c’)中去, 然后傳給startswith()
或者 endswith()
方法
>>> for i in filenames: if i.endswith(('.txt','.xml')): print(i) 111.xml 123.txt 123123.xml 1234.txt 222.xml book.xml movie.xml movies.xml receive.txt user.xml >>> [i for i in filenames if i.endswith(('.txt','.xml'))] ['111.xml', '123.txt', '123123.xml', '1234.txt', '222.xml', 'book.xml', 'movie.xml', 'movies.xml', 'receive.txt', 'user.xml']
4、列出開頭為book和1的文件名
>>> [i for i in filenames if i.startswith(('book','1'))] ['111.csv', '111.xlsx', '111.xml', '123.txt', '123.xlsx', '123123.xml', '123123.xml.bak', '1234.txt', 'book.xml', 'book.xml.bak']
5、查看是否存在xml的文件
檢查某個文件夾中是否存在指定的文件類型:
if any(name.endswith(('.c', '.h')) for name in listdir(dirname)):
>>> any(name.endswith('.xml') for name in filenames) True
參考資料:http://python3-cookbook.readthedocs.org/zh_CN/latest/c02/p02_match_text_at_start_end.html