如何将HTML转CSV导出文件保存到py文件同路径并将csv命名为所在文件夹名
实现方案
修改后完整代码
import pandas as pd import os # 获取当前运行py文件所在的绝对路径,避免工作目录变化导致存储位置错误 script_dir = os.path.dirname(os.path.abspath(__file__)) # 统计同文件夹下HTML文件数量,避免CSV重名覆盖 name_counter = {} directoryPath = r"./" for folders, sub_folders, files in os.walk(directoryPath): for name in files: if name.endswith(".html"): filename = os.path.join(folders, name) print(f"正在处理:{filename}") dfs = pd.read_html(filename) # 提取HTML文件所在的文件夹名 folder_name = os.path.basename(os.path.dirname(filename)) # 处理重名逻辑 if folder_name not in name_counter: name_counter[folder_name] = 1 csv_filename = f"{folder_name}.csv" else: csv_filename = f"{folder_name}_{name_counter[folder_name]}.csv" name_counter[folder_name] += 1 # 拼接完整CSV存储路径:脚本目录+CSV文件名 csv_full_path = os.path.join(script_dir, csv_filename) # 导出CSV dfs[3].to_csv(csv_full_path, index=False, encoding='utf-8-sig') print(f"已导出到:{csv_full_path}")
核心改动说明
- 新增
script_dir变量获取当前py文件的绝对路径:使用os.path.abspath(__file__)定位当前脚本的真实位置,不受脚本启动时的工作目录影响,确保CSV一定会存在py文件同目录下 - 新增文件夹名提取逻辑:通过
os.path.basename(os.path.dirname(filename))拿到当前HTML文件所在的文件夹名称,作为CSV的基础文件名 - 新增重名处理逻辑:用
name_counter统计同文件夹名出现的次数,同一个文件夹下有多个HTML时,会自动给CSV文件名加数字后缀,避免文件覆盖 - 优化导出参数:新增
encoding='utf-8-sig'确保中文在Excel中打开不会乱码,index=False避免导出多余的索引列
注意事项
如果你的业务逻辑允许同一个文件夹下的多个HTML合并到同一个CSV中,可以去掉重名计数逻辑,改为追加写入的方式即可。
内容的提问来源于stack exchange,提问作者余振暘
相关产品推荐
相关产品推荐

