Python提取Excel表格内超链接并将对应文件按类别添加到相应同时新建的文件夹中

Python提取Excel表格内超链接并将对应文件按类别添加到相应同时新建的文件夹中

示例代码

import os
import shutil
import pandas as pd
import openpyxl
import urllib.parse

# 读取excel文件
wb = openpyxl.load_workbook('PPP项目政策梳理目录.xlsx')

# 获取工作簿中的工作表
ws = wb['案例指引']

# 存储文件路径和对应分类
file_paths = []
categories = []

# 遍历表格中的每一行
for row in ws.rows:
    # 获取超链接单元格和分类单元格
    hyperlink_cell = row[3]
    category_cell = row[7]
    # 如果该单元格包含超链接
    if hyperlink_cell.hyperlink:
        # 解析超链接,获取实际文件路径
        hyperlink_url = hyperlink_cell.hyperlink.target
        try:
            file_path = urllib.parse.unquote(hyperlink_url)
            # 如果文件不存在,则打印错误信息并跳过
            if not os.path.exists(file_path):
                print(f'无法找到链接对应的文件: {file_path}')
                continue
            file_paths.append(file_path)
        except Exception as e:
            print(f'解析超链接出错: {e}')
            continue
        # 获取分类并保存
        category = category_cell.value
        categories.append(category)

# 将文件路径和分类存储到DataFrame中
df = pd.DataFrame({'文件链接': file_paths, '分类': categories})

# 指定要创建的目标文件夹路径
target_dir = r'C:\Users\z_ml_\Desktop\新分类2'

# 根据分类列进行分组,将对应的文件复制到目标文件夹中
#print(df1=df.groupby('分类'))
for group, df_group in df.groupby('分类'):
    # 指定该分类对应的文件夹名称
    group_folder = os.path.join(target_dir, group)
    
    # 如果该文件夹不存在,则创建
    if not os.path.exists(group_folder):
        os.makedirs(group_folder)
    
    # 将该分类下的所有文件复制到对应文件夹中
    for index, row in df_group.iterrows():
        try:
            file_path = row['文件链接']
            shutil.copy(file_path, group_folder)
        except Exception as e:
            print(f'无法复制文件: {file_path},错误信息: {e}')
            continue

解释都在注释里

你可能感兴趣的:(Python练习,Python回顾,python,excel,数据分析)