如何在python中找到扩展名为.txt的目录中的所有文件?
当前回答
你可以简单地使用pathlibs glob 1:
import pathlib
list(pathlib.Path('your_directory').glob('*.txt'))
或在循环中:
for txt_file in pathlib.Path('your_directory').glob('*.txt'):
# do something with "txt_file"
如果你想递归你可以使用。glob('**/*.txt')
1 pathlib模块被包含在python 3.4的标准库中。但是你甚至可以在旧的Python版本(即使用conda或pip)上安装该模块的反向端口:pathlib和pathlib2。
其他回答
Path.py是另一种选择:https://github.com/jaraco/path.py
from path import path
p = path('/path/to/the/directory')
for f in p.files(pattern='*.txt'):
print f
这段代码使我的生活更简单。
import os
fnames = ([file for root, dirs, files in os.walk(dir)
for file in files
if file.endswith('.txt') #or file.endswith('.png') or file.endswith('.pdf')
])
for fname in fnames: print(fname)
如果文件夹包含大量文件或内存受限,可以考虑使用生成器:
def yield_files_with_extensions(folder_path, file_extension):
for _, _, files in os.walk(folder_path):
for file in files:
if file.endswith(file_extension):
yield file
选项A:迭代
for f in yield_files_with_extensions('.', '.txt'):
print(f)
选项B:全部获取
files = [f for f in yield_files_with_extensions('.', '.txt')]
试试这个,这将递归地找到你所有的文件:
import glob, os
os.chdir("H:\\wallpaper")# use whatever directory you want
#double\\ no single \
for file in glob.glob("**/*.txt", recursive = True):
print(file)
我建议你使用fnmatch和上面的方法。通过这种方式,你可以找到以下任何一个:
Name.txt; Name.TXT; Name.Txt
.
import fnmatch
import os
for file in os.listdir("/Users/Johnny/Desktop/MyTXTfolder"):
if fnmatch.fnmatch(file.upper(), '*.TXT'):
print(file)
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录