如何在python中找到扩展名为.txt的目录中的所有文件?
当前回答
许多用户都回复了os。Walk回答,其中包括所有文件,还包括所有目录和子目录及其文件。
import os
def files_in_dir(path, extension=''):
"""
Generator: yields all of the files in <path> ending with
<extension>
\param path Absolute or relative path to inspect,
\param extension [optional] Only yield files matching this,
\yield [filenames]
"""
for _, dirs, files in os.walk(path):
dirs[:] = [] # do not recurse directories.
yield from [f for f in files if f.endswith(extension)]
# Example: print all the .py files in './python'
for filename in files_in_dir('./python', '*.py'):
print("-", filename)
或者对于一次性不需要发电机的情况:
path, ext = "./python", ext = ".py"
for _, _, dirfiles in os.walk(path):
matches = (f for f in dirfiles if f.endswith(ext))
break
for filename in matches:
print("-", filename)
如果你打算为其他东西使用匹配,你可能想让它成为一个列表,而不是一个生成器表达式:
matches = [f for f in dirfiles if f.endswith(ext)]
其他回答
你可以简单地使用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。
以python方式获取“dataPath”文件夹中所有的“。txt”文件名:
from os import listdir
from os.path import isfile, join
path = "/dataPath/"
onlyTxtFiles = [f for f in listdir(path) if isfile(join(path, f)) and f.endswith(".txt")]
print onlyTxtFiles
要从同一个目录中名为“data”的文件夹中获取一个“。txt”文件名的数组,我通常使用以下简单的代码行:
import os
fileNames = [fileName for fileName in os.listdir("data") if fileName.endswith(".txt")]
这样的东西就可以了
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.txt'):
print(file)
使用Python OS模块查找具有特定扩展名的文件。
简单的例子如下:
import os
# This is the path where you want to search
path = r'd:'
# this is extension you want to detect
extension = '.txt' # this can be : .jpg .png .xls .log .....
for root, dirs_list, files_list in os.walk(path):
for file_name in files_list:
if os.path.splitext(file_name)[-1] == extension:
file_name_path = os.path.join(root, file_name)
print file_name
print file_name_path # This is the full path of the filter file
推荐文章
- 在python中,年龄从出生日期开始
- 使用pip安装SciPy
- 在Python中,我应该如何测试变量是否为None, True或False
- 如何在Python中从毫秒创建datetime ?
- 如何解窝(爆炸)在一个熊猫数据帧列,成多行
- 如何使用pip安装opencv ?
- 在pip冻结命令的输出中“pkg-resources==0.0.0”是什么
- 格式y轴为百分比
- 熊猫连接问题:列重叠但没有指定后缀
- 为什么空字典在Python中是一个危险的默认值?
- 在Python中,冒号等于(:=)是什么意思?
- Python "SyntaxError:文件中的非ascii字符'\xe2' "
- 如何从psycopg2游标获得列名列表?
- Python中dict对象的联合
- 如何有效地比较两个无序列表(不是集合)?