如何用os库匹配目录名称并结合Pandas生成TXT文件存在判定表格
解决方案
步骤1:从完整路径提取主目录名称
你可以通过相对路径拆分的方式,从os.walk返回的完整路径里提取对应的主目录名:先把完整路径转换成相对于Data目录的相对路径,再拆分路径的第一个部分,就能得到Folder1/Folder2这类主目录名称。
步骤2:整合逻辑并生成表格
下面是完整的实现代码,已经帮你整合了遍历、匹配和生成表格的逻辑:
import os import pandas as pd # 定义Data目录的路径,避免重复书写 data_dir = r'C:\Users\Name\New\Data' # 获取35个主目录的列表(优化了原代码的while循环写法) main_folders = os.listdir(data_dir) # 用集合存储存在txt文件的主目录(自动去重,避免重复记录同一个主目录) has_txt_folders = set() # 遍历所有目录和文件 for root, dirs, files in os.walk(data_dir): for file in files: if file.endswith('.txt'): # 计算当前路径相对于Data目录的相对路径 rel_path = os.path.relpath(root, data_dir) # 拆分相对路径,第一个元素就是主目录名称(os.sep自动适配系统路径分隔符) main_folder = rel_path.split(os.sep)[0] # 将主目录加入集合 has_txt_folders.add(main_folder) # 生成每个主目录的"是/否"标记 result = [] for folder in main_folders: result.append({ '主目录名称': folder, '是否包含含txt文件的子目录': '是' if folder in has_txt_folders else '否' }) # 用pandas生成表格并输出 df = pd.DataFrame(result) print(df) # 如果需要保存为Excel文件,取消下面注释即可 # df.to_excel('目录检查结果.xlsx', index=False)
代码说明
- 用
os.path.relpath获取相对路径,搭配os.sep拆分路径,能适配Windows和Linux的不同路径分隔符,避免硬编码\导致的兼容性问题。 - 使用集合
has_txt_folders是因为同一个主目录下可能有多个子目录包含txt文件,集合会自动去重,无需额外处理重复记录。 - 最终生成的DataFrame可以直接打印查看,也能保存为Excel文件方便后续整理。
内容的提问来源于stack exchange,提问作者geoscience-rocks12345
相关产品推荐
相关产品推荐

