写一个python代码,读取文件夹下每个压缩包名,将压缩包名与参数数据.xlxs中M列中最后一个“/"后面内容对应,后提取该行E列+F列+D列用“-”连接成字符串修改原文件名,直到文件夹下压缩包名全部修改完成
时间: 2024-09-11 14:06:46 浏览: 52
attendanceHelper:我在CS50的最后一个项目。 我和其他人将在工作中使用的工具
为了实现这个功能,你需要先安装`os`, `zipfile`, 和 `pandas`库,然后按照描述步骤编写Python代码。这里是一个简单的示例:
```python
import os
import zipfile
import pandas as pd
# 读取参数数据
params_df = pd.read_excel('参数数据.xlsx', sheet_name='Sheet1') # 假设你的表名为'Sheet1'
params_df = params_df.dropna(subset=['M']) # 确保'M'列有值
# 获取需要处理的文件夹路径
folder_path = 'your_folder_path' # 替换为你实际的文件夹路径
for file in os.listdir(folder_path):
if file.endswith('.zip'): # 检查是否为压缩包
with zipfile.ZipFile(os.path.join(folder_path, file), 'r') as zip_ref:
name_without_extension = os.path.splitext(file)[0] # 去除扩展名
m_value = params_df.loc[params_df['M'].str.endswith('/' + name_without_extension)]['M'].iloc[-1] # 找到对应参数
e_f_d_values = [m_value.split('/')[-1], params_df.loc[m_value]['E'], params_df.loc[m_value]['F']]
new_filename = '-'.join(e_f_d_values)
# 生成新的文件名,如果原始文件不存在则直接替换,否则先备份原有文件
old_file_path = os.path.join(folder_path, file)
new_file_path = os.path.join(folder_path, new_filename + '.zip')
if not os.path.exists(new_file_path):
shutil.move(old_file_path, new_file_path)
# 更新完成后,记得检查是否有未修改的文件,可能是因为参数匹配不上
unmodified_files = [f for f in os.listdir(folder_path) if f.endswith('.zip') and f != new_filename + '.zip']
if unmodified_files:
print(f"无法找到对应参数的压缩包有:{unmodified_files}")
阅读全文