Files
mt_mt5_backertest/extract_filenames.py
T
2026-07-06 03:32:12 +08:00

68 lines
2.1 KiB
Python

import os
from datetime import datetime
def extract_filenames():
print("=" * 50)
print("批量提取文件名工具")
print("=" * 50)
folder_path = input("\n请输入文件夹路径: ").strip()
if not folder_path:
print("文件夹路径不能为空!")
return
if not os.path.isdir(folder_path):
print(f"错误: 路径 '{folder_path}' 不存在或不是文件夹!")
return
recursive = input("是否包含子文件夹? (y/n, 默认y): ").strip().lower()
if recursive == 'n':
recursive = False
else:
recursive = True
output_filename = input("输出文件名 (直接回车使用自动命名): ").strip()
print(f"\n正在扫描文件夹: {folder_path}")
if recursive:
print("模式: 包含子文件夹 (递归)")
else:
print("模式: 仅当前文件夹")
print("请稍候...")
filenames = []
try:
for root, dirs, files in os.walk(folder_path):
for filename in files:
full_path = os.path.join(root, filename)
rel_path = os.path.relpath(full_path, folder_path)
filenames.append(rel_path)
if not recursive:
break
filenames.sort()
folder_name = os.path.basename(os.path.abspath(folder_path))
if output_filename:
output_path = os.path.join(os.path.dirname(os.path.abspath(folder_path)), output_filename)
else:
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
output_filename = f"{folder_name}_filenames_{timestamp}.txt"
output_path = os.path.join(os.path.dirname(os.path.abspath(folder_path)), output_filename)
with open(output_path, 'w', encoding='utf-8') as f:
for name in filenames:
f.write(name + '\n')
print(f"\n完成! 共找到 {len(filenames)} 个文件")
print(f"结果已保存到: {output_path}")
except Exception as e:
print(f"发生错误: {e}")
if __name__ == "__main__":
extract_filenames()
input("\n按回车键退出...")