有大量资料需要整理,需要从指定目录读取所有子文件夹及其文件名并输出至对应子文件夹名的txt文件中,基于Python 快速获取文件夹中的所有文件名,并保存到txt文件中_python如何把文件夹中的文件名除了文件格式都读出来并保存-CSDN博客
的基础代码进行了修改,实现了两个新增功能:
①增加代码,实现了对文件和文件夹的区分;
②增加代码,实现了为每个子文件夹建立单独的txt文件,将子文件夹遍历到的文件名写入到txt文件中;
③定义递归函数,遍历所有子文件夹,使二级子文件夹也能实现功能②;
④增加部分代码,实现指定生成文件路径。
更新:
添加语句,使用UTF-8编码,确保兼容性。
真厉害,又更新了,这次更新使生成的txt自动命名为‘根目录_子文件夹.txt’,而且二级子文件夹txt自动命名为‘根目录_子文件夹_二级子文件夹.txt’啦!~
# -*- coding: utf-8 -*-
"""
Created on Thu Apr 11 19:17:17 2024
@author: 复制粘贴成就未来
"""
import os
#定义函数,遍历根目录下所有文件夹及子文件夹,输出文件夹下文件
def write_filenames_to_txt(folder_path, root_path, output_dir):
#真实路径定义为相对根目录路径,以便txt文件命名中引用
rel_path_from_root = os.path.relpath(folder_path, root_path)
#将路径中的斜杠(或反斜杠)替换为下划线,以便用作文件名
safe_path = rel_path_from_root.replace(os.sep, '_')
#使用safe_path作为文件名,在输出目录下生成txt
output_file_path = os.path.join(output_dir, f'{safe_path}_list.txt')
#写入文本
with open(output_file_path, 'w', encoding='utf-8') as txt_file:
#遍历当前文件夹内的所有文件和文件夹
for item in os.listdir(folder_path):
item_path = os.path.join(folder_path, item)
#如果是文件,则写入txt
if os.path.isfile(item_path):
txt_file.write(item + '\n')
#如果是子文件夹,则递归调用
elif os.path.isdir(item_path):
write_filenames_to_txt(item_path, root_path, output_dir)
#指定根目录和输出目录
root_folder_path = r'C:\path\to\your\documents'
output_directory = r'C:\path\to\your\output_txt_files'
#确保输出目录存在
if not os.path.exists(output_directory):
os.makedirs(output_directory)
#调用递归函数处理根目录
write_filenames_to_txt(root_folder_path, root_folder_path, output_directory)
print('处理完成,txt文件已保存到指定的输出目录。')