某个文件夹中有很多个文件,现在想要根据文件标题名前面的股票名称,放入对应的子文件夹中。
在deepseek中输入提示词:
你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下:
打开文件夹:“F:研报下载”
读取里面所有的doc、docx、pdf文件;
提取文件标题名中第一个符号“-”前面的字符,
和子文件夹名称进行比对,
如果一致,就把这些文件移动到对应的子文件夹中。
举个例子:
文件名为:开普云-2024-9-17-688228.SH-开普云 2023年年度报告-2024-04-20.pdf
提取到的字符为:开普云,那么将这个pdf文件移动到“开普云”这个文件夹中
注意:每一步都要输出信息到屏幕上
Deepseek的回复和源代码:
下面是一个完整的Python脚本,它实现了你描述的功能。脚本会打开指定的文件夹,读取所有的 .doc、.docx 和 .pdf 文件,提取文件标题中第一个符号“-”前面的字符,并与子文件夹名称进行比对。如果一致,则将文件移动到对应的子文件夹中。每一步都会输出信息到屏幕上。
import os
import shutil
# 定义文件夹路径
folder_path = "F:\研报下载"
# 获取文件夹中的所有文件和子文件夹
files = []
subfolders = []
# 遍历文件夹中的所有内容
for item in os.listdir(folder_path):
item_path = os.path.join(folder_path, item)
if os.path.isfile(item_path):
files.append(item)
elif os.path.isdir(item_path):
subfolders.append(item)
# 输出文件和子文件夹信息
print(f"Found {len(files)} files in the folder.")
print(f"Found {len(subfolders)} subfolders in the folder.")
# 遍历所有文件
for file in files:
# 检查文件扩展名是否为doc、docx或pdf
if file.endswith(('.doc', '.docx', '.pdf')):
# 提取文件名中第一个“-”前面的字符
file_name = os.path.splitext(file)[0]
title_prefix = file_name.split('-')[0]
# 输出提取的标题前缀
print(f"Extracted title prefix: {title_prefix} from file: {file}")
# 检查是否存在与标题前缀一致的子文件夹
if title_prefix in subfolders:
# 构建目标文件路径
target_folder = os.path.join(folder_path, title_prefix)
target_file_path = os.path.join(target_folder, file)
# 移动文件到目标文件夹
shutil.move(os.path.join(folder_path, file), target_file_path)
# 输出移动信息
print(f"Moved file: {file} to folder: {title_prefix}")
else:
# 输出未找到匹配子文件夹的信息
print(f"No matching subfolder found for file: {file}")
print("File organization complete.")
脚本说明:
文件夹路径:脚本首先定义了要处理的文件夹路径 folder_path。
获取文件和子文件夹:脚本遍历文件夹中的所有内容,将文件和子文件夹分别存储在 files 和 subfolders 列表中。
输出文件和子文件夹信息:脚本输出找到的文件和子文件夹的数量。
遍历文件:脚本遍历所有文件,检查文件扩展名是否为 .doc、.docx 或 .pdf。
提取标题前缀:对于符合条件的文件,脚本提取文件名中第一个“-”前面的字符,并输出提取的标题前缀。
检查子文件夹:脚本检查是否存在与标题前缀一致的子文件夹。如果存在,则将文件移动到对应的子文件夹中,并输出移动信息。如果不存在,则输出未找到匹配子文件夹的信息。
完成信息:脚本在完成文件组织后输出完成信息。
注意事项:
确保文件夹路径正确,并且文件夹中有足够的权限进行读写操作。
如果文件名中没有“-”符号,脚本会抛出异常,因此在实际使用中可能需要添加额外的错误处理。
如果文件名中包含多个“-”符号,脚本只会提取第一个“-”前面的字符。
程序运行结果: