文件夹改名后还可以恢复原本的名称,这样操作最简单

本文介绍如何使用“文件批量改名高手”软件进行文件夹的批量重命名,并提供了详细的步骤来说明如何将文件夹名称恢复为原始名称。通过简单的操作即可实现文件夹名的更改与还原。

现在大家使用电脑办公,修改文件夹的文件名称时都选择批量重命名方法,那么当重命名后,如何将原文件的的文件夹名恢复呢?下面随小编一起看操作步骤。希望以后可以用到。

第一步,运行“文件批量改名高手”切换到“文件夹批量改名”界面。

 第二步,点击“选择多个文件夹”将文件夹全选导入一行一个,并设置“命名方式”自定义,输入新文件名称。

 第三步,完成后,可以在上方“新文件夹名”中预览一下。

 第四步,没问题的话,即可点击“开始改名”重命名成功后,任意选择一行“右键”选择打开文件夹所在位置。

 第五步,在弹出的窗口中可以看到所有文件夹改名成功。

 第六步,在主界面中有个“新旧文件夹名互换”功能,点击一下可以看到原文件名和新文件名进行了互换。

 第七步,继续点击“开始改名”重命名成功后,同样的操作打开文件夹所在位置,可以看到文件夹名称已经恢复回原来名称。

 

<think> 根据用户需求,我们需要: 1. 遍历到每一个最底层文件夹(即没有子文件夹文件夹) 2. 搜索所有含有"_analysis"的xlsx文件 3. 合并这些文件到一个名为"测序结果汇总.xlsx"的Excel文件中 4. 每个sheet的名称设置为:上一级文件夹名字 + "-" + 文件名(去掉"_analysis.xlsx"后缀的部分) 注意:这里的“上一级文件夹”是指包含该文件的直接父文件夹(即最底层文件夹本身),因为文件就在最底层文件夹内。 步骤: 1. 遍历目录树,找到所有最底层文件夹(没有子文件夹文件夹) 2. 在每个最底层文件夹中查找文件名包含"_analysis"的xlsx文件 3. 对每个符合条件的文件,提取: - 文件路径 - 上一级文件夹名称(即最底层文件夹的名字) - 文件名的前缀(即去掉"_analysis.xlsx"后缀的部分) 4. 将每个文件读取为一个DataFrame,并写入到汇总Excel文件的一个单独sheet中,sheet名称为:文件夹名-文件名前缀(注意:Excel的sheet名称不能超过31个字符,且不能包含非法字符,所以需要适当处理) 实现代码: ```python import os import pandas as pd from openpyxl import load_workbook import re def sanitize_sheet_name(name): """清理不合法的sheet名称字符,并截断至31个字符""" # 去除Excel不允许的字符:: \ / ? * [ ] name = re.sub(r'[\\/*?[\]:]', '', name) if len(name) > 31: name = name[:31] return name def merge_analysis_xlsx(root_dir, output_file="测序结果汇总.xlsx"): # 收集所有符合条件的文件信息:[(文件路径, 文件夹名, 文件名前缀), ...] target_files = [] # 遍历目录 for foldername, subfolders, filenames in os.walk(root_dir): # 如果当前文件夹没有子文件夹,说明是最底层文件夹 if not subfolders: folder_name = os.path.basename(foldername) # 当前文件夹的名字 for filename in filenames: # 检查文件名是否以.xlsx结尾且包含"_analysis" if filename.endswith('.xlsx') and '_analysis' in filename: # 提取文件名前缀(去掉_analysis.xlsx) # 注意:文件名可能包含多个_analysis,我们以最后一个_analysis之前的作为前缀? # 但用户需求是“_analysis.xlsx前”,所以我们假设文件名格式为:任意字符串_analysis.xlsx # 因此,我们直接分割字符串,取第一个部分 if filename.endswith('_analysis.xlsx'): prefix = filename[:-len('_analysis.xlsx')] else: # 如果_analysis不在最后,我们也可以分割,但用户需求是“_analysis.xlsx前”的命名 # 所以我们直接找到_analysis的位置,然后取前面的部分 idx = filename.find('_analysis') if idx != -1: prefix = filename[:idx] else: prefix = filename.rsplit('.', 1)[0] # 如果没有_analysis(理论上不会),则去掉扩展名 # 构建sheet名称文件夹名-文件名前缀 sheet_name = f"{folder_name}-{prefix}" sheet_name = sanitize_sheet_name(sheet_name) file_path = os.path.join(foldername, filename) target_files.append((file_path, sheet_name)) if not target_files: print("未找到符合条件的xlsx文件") return # 创建一个新的Excel文件 with pd.ExcelWriter(output_file, engine='openpyxl') as writer: # 遍历每个文件,读取并写入汇总文件 for file_path, sheet_name in target_files: try: # 读取整个Excel文件(注意:这里只读取第一个sheet,还是所有sheet?但用户需求是合并每个文件,每个文件对应一个sheet) # 根据需求,每个xlsx文件我们只取一个sheet吗?还是合并所有sheet? # 需求没有明确,但根据上下文,每个文件应该是一个分析结果,我们假设每个文件只有一个sheet,或者我们只读取第一个sheet? # 为了安全,我们只读取第一个sheet(因为通常这种分析结果一个文件只有一个表) df = pd.read_excel(file_path, sheet_name=0) # 读取第一个sheet df.to_excel(writer, sheet_name=sheet_name, index=False) except Exception as e: print(f"处理文件 {file_path} 时出错: {e}") print(f"合并完成,共合并 {len(target_files)} 个文件。结果保存到: {os.path.abspath(output_file)}") if __name__ == "__main__": root_directory = input("请输入要遍历的根目录路径: ").strip() merge_analysis_xlsx(root_directory) ``` ### 说明: 1. 函数`sanitize_sheet_name`用于清理不合法的字符并截断长度,确保sheet名称有效。 2. 在遍历最底层文件夹时,我们使用`os.walk`,并通过`if not subfolders`判断其为最底层。 3. 对于文件名,我们处理两种情况: - 文件名以`_analysis.xlsx`结尾:直接去掉这个后缀得到前缀。 - 文件名包含`_analysis`但不是以这个结尾:取第一个`_analysis`之前的部分作为前缀。 4. 读取每个xlsx文件时,我们只读取第一个sheet(索引0)。如果文件中有多个sheet,且需要全部合并,则需调整,但根据需求描述,每个文件应该是一个分析表,所以按一个处理。 ### 使用示例: 假设目录结构如下: ``` 根目录/ 样本1/ 样本1_analysis.xlsx 样本2/ 样本2_analysis.xlsx ``` 则合并后的汇总文件有两个sheet,名称分别为: - 样本1-样本1 - 样本2-样本2 ### 相关问题: §§相关问题§§ 1. 如何同时合并每个xlsx文件中的多个sheet? 2. 如果遇到不同xlsx文件结构(列名)不一致,如何确保合并正确? 3. 如何保留原始文件中的格式(如字体、颜色、公式等)? 4. 如果文件数量非常大,合并过程中如何避免内存溢出? </think> ### Python实现:遍历最底层文件夹合并含`_analysis`的xlsx文件 以下是完整解决方案,实现遍历最底层文件夹、搜索含`_analysis`的xlsx文件,合并为`测序结果汇总.xlsx`文件,sheet命名格式为`上一级文件夹名-文件名前缀`: ```python import os import pandas as pd import re from openpyxl import load_workbook from tqdm import tqdm # 可选进度条 def sanitize_sheet_name(name): """清理sheet名称中的非法字符并截断长度""" # 替换Excel禁止的字符: \ / * ? : [ ] cleaned = re.sub(r'[\\/*?:\[\]]', '', name) return cleaned[:31] # Excel sheet名称最大31字符 def merge_analysis_xlsx(root_dir, output_file="测序结果汇总.xlsx"): """ 遍历最底层文件夹,合并含_analysis的xlsx文件 参数: root_dir: 根目录路径 output_file: 输出文件名 """ target_files = [] # 存储(文件路径, sheet名称) # 遍历目录查找目标文件 for foldername, subfolders, filenames in os.walk(root_dir): # 确定为最底层文件夹(无子文件夹) if not subfolders: parent_dir = os.path.basename(os.path.dirname(foldername)) # 上一级文件夹名 for filename in filenames: # 匹配 *_analysis.xlsx if filename.endswith('.xlsx') and '_analysis' in filename: # 提取文件名前缀(去掉_analysis.xlsx) prefix = filename.split('_analysis.xlsx')[0] # 构建sheet名称: 上一级文件夹-文件名前缀 sheet_name = f"{parent_dir}-{prefix}" sheet_name = sanitize_sheet_name(sheet_name) target_files.append(( os.path.join(foldername, filename), sheet_name )) if not target_files: print("未找到符合条件的xlsx文件") return None # 创建汇总Excel文件 with pd.ExcelWriter(output_file, engine='openpyxl') as writer: # 逐个写入目标文件 for file_path, sheet_name in tqdm(target_files, desc="合并进度"): try: # 读取Excel文件(第一个sheet) df = pd.read_excel(file_path, sheet_name=0) # 写入汇总文件 df.to_excel(writer, sheet_name=sheet_name, index=False) except Exception as e: print(f"处理文件 {file_path} 时出错: {str(e)}") print(f"合并完成! 共合并 {len(target_files)} 个文件") return os.path.abspath(output_file) if __name__ == "__main__": root_path = input("请输入根目录路径: ").strip() result_path = merge_analysis_xlsx(root_path) if result_path: print(f"结果已保存至: {result_path}") ``` ### 核心功能说明 1. **目录遍历逻辑**: - 使用`os.walk`递归遍历目录树 - 通过`if not subfolders`识别最底层文件夹 - 获取上一级文件夹名: $$ \text{parent\_dir} = \text{os.path.basename}(\text{os.path.dirname}(\text{foldername})) $$ 2. **文件筛选机制**: ```python if filename.endswith('.xlsx') and '_analysis' in filename: prefix = filename.split('_analysis.xlsx')[0] ``` 3. **Sheet命名规则**: ```python sheet_name = f"{parent_dir}-{prefix}" # 格式: 上一级文件夹-文件名前缀 sheet_name = re.sub(r'[\\/*?:\[\]]', '', sheet_name)[:31] # 清理非法字符并截断 ``` 4. **关键技术点**: - 使用`pd.ExcelWriter`创建多sheet Excel文件 - `openpyxl`引擎支持保留原始格式 - 异常处理确保单个文件错误不影响整体流程 - 进度显示(tqdm库,需安装) ### 使用说明 1. **安装依赖**: ```bash pip install pandas openpyxl tqdm ``` 2. **执行流程**: ```mermaid graph TD A[输入根目录路径] --> B{遍历目录树} B --> C[识别最底层文件夹] C --> D[筛选_analysis.xlsx文件] D --> E[提取父文件夹名+文件名前缀] E --> F[创建汇总Excel] F --> G[逐个写入sheet] G --> H[输出结果路径] ``` 3. **输出结果示例**: - 文件名: `测序结果汇总.xlsx` - Sheet命名: `样本组A-测序结果1`, `样本组B-测序结果2`等 > **注意事项**: > 1. 原始文件中若有多个sheet,默认只读取第一个sheet > 2. Sheet名称自动清理Excel禁止字符`\/*?:[]` > 3. 大型文件处理建议增加内存优化措施[^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值