first commit
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
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按回车键退出...")
|
||||
Reference in New Issue
Block a user