Python之筛选文件夹目录下的文件

本文介绍如何使用Python查找目录下最新测试结果文件,并配置邮件发送该文件作为附件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     例如在测试过程中会生成多个测试结果,我们需要获取当前最新的测试结果,然后通过邮件的方式发送出去。

首先、要做的是进行筛选最新的文件。

# -*- coding: utf-8 -*-
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart

# -----自动化执行结果路径信息-------------------
#测试结果存放的目录,使用相对路径
DIR = '../test_report/report/html/'

# -----HTML报告:获取路径下最新的文件---------
items = os.listdir(DIR)
items.sort(reverse=False)  # 升序
HTML_report = items[len(items) - 1]

# -----HTML报告:从最新的文件中截取时间内容,倒数第6-22个字符----------
now_date = HTML_report[-21:-5]

# -----HTML报告:拼写HTML报告的发布路径---------
URL_report = DIR + HTML_report

# -----执行结果记录:ReportList.txt--------
# -----读取dd_interface_errlog.txt文件,计算文件字符数量---------
try:
     error_data = file_object_error.read()
finally:
     file_object_error.close()
print(len(error_data))

# -----当文件字符数量>100个,则存在异常信息,将报告名称写入ReportList.txt文件---------
# -----当文件字符数量≤100个,则执行结果无异
<think>我们被要求生成一个Python代码,用于遍历当前目录及其子目录中的所有文件,并获取文件列表。根据引用[2]中的示例,我们可以使用os.walk()函数来实现这个功能。os.walk()会遍历目录树,每次迭代返回一个三元组(当前目录路径,当前目录下的子目录列表,当前目录下的文件列表)。我们只需要收集所有文件的完整路径即可。步骤:1.导入os模块。2.使用os.walk('.')来遍历当前目录('.'表示当前目录)。3.对于每个三元组(root,dirs,files),root是当前目录的路径,files是当前目录下的文件名列表。4.将文件名与root组合成完整路径(使用os.path.join(root,file)),并添加到结果列表中。注意:我们不需要子目录,所以可以忽略dirs。代码示例:我们将定义一个函数,它返回当前目录及其子目录中所有文件的完整路径列表。另外,根据用户要求,我们还需要生成相关问题。但是注意:用户的问题是关于遍历当前文件夹下的所有文件,而引用[2]中给出了遍历指定后缀文件的示例,我们可以稍作修改,去掉后缀过滤。因此,我们可以这样写:</think>以下是使用Python遍历当前目录及其子目录获取所有文件列表的解决方案: ### 解决方案 ```python import os def get_all_files(directory='.'): """获取目录及其子目录下所有文件的完整路径列表""" file_list = [] for root, dirs, files in os.walk(directory): for file in files: # 拼接文件完整路径 full_path = os.path.join(root, file) file_list.append(full_path) return file_list # 使用示例 if __name__ == "__main__": current_dir = os.getcwd() # 获取当前工作目录 all_files = get_all_files(current_dir) # 打印结果(前10个示例) print(f"共找到 {len(all_files)} 个文件:") for i, file_path in enumerate(all_files[:10]): print(f"{i+1}. {file_path}") if len(all_files) > 10: print(f"...及其他 {len(all_files)-10} 个文件") ``` ### 关键点说明 1. **`os.walk()`函数**: - 递归遍历目录树,返回三元组 `(当前目录路径, 子目录列表, 文件列表)` - 是处理目录遍历的最高效方法[^3] 2. **路径拼接**: - `os.path.join(root, file)` 自动处理不同操作系统的路径分隔符问题 - 生成文件的绝对路径或相对路径(取决于输入的起始目录) 3. **返回值**: - 返回包含所有文件完整路径的列表 - 默认从当前目录开始遍历(参数 `directory='.'`) ### 使用示例 ```python # 获取当前目录下所有文件 files = get_all_files() # 获取指定目录下所有文件 files = get_all_files("/path/to/your/directory") # 筛选特定类型文件(示例:获取所有.py文件py_files = [f for f in get_all_files() if f.endswith('.py')] ``` ### 性能说明 - 时间复杂度:$O(n)$(n为文件总数) - 空间复杂度:$O(n)$(需要存储所有文件路径) - 适合处理数千级别的文件数量,超大规模目录建议使用生成器版本[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值