You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从多Excel提取邮箱生成CSV失败:无输出且手动文件被删除

问题分析与解决方案

核心问题定位

脚本执行日志显示成功,但输出文件不存在,手动创建会被脚本删除后无后续写入,大概率是以下几种情况:

1. 未提取到任何邮箱地址

脚本逻辑是:

  • 先删除已存在的输出文件
  • 仅当从Excel中提取到邮箱时,才会追加写入CSV

如果所有目标Excel文件中都没有匹配到邮箱(比如数据格式变化、邮箱正则不匹配新格式),脚本删除原文件后不会创建新文件,最终就会出现“文件消失”的现象。

2. 输出路径无写入权限

C:\Users\HAL-2023\Desktop\Py_out文件夹可能存在权限限制,导致pandas无法写入文件,但未抛出明确错误。

3. 文件被杀毒软件拦截

部分杀毒软件会将自动生成的CSV文件判定为可疑文件,直接拦截删除,尤其脚本先删后写的操作可能触发检测。


分步排查与修复

第一步:确认是否提取到邮箱

修改脚本,添加日志查看提取情况:

# Loop through Excel files in the folder
for filename in os.listdir(folder_path):
    if filename.endswith('.xlsx') or filename.endswith('.xls'):
        input_file_path = os.path.join(folder_path, filename)
        print(f"正在处理文件: {filename}")  # 新增:确认是否遍历到目标文件
        email_addresses = extract_emails_from_excel(input_file_path)
        print(f"从{filename}提取到{len(email_addresses)}个邮箱")  # 新增:查看提取数量

        # Append extracted email addresses to the CSV file
        if email_addresses:
            df = pd.DataFrame({'Email Addresses': email_addresses})
            df.to_csv(output_csv_file, mode='a', index=False, header=False)

运行后查看输出:

  • 如果显示“提取到0个邮箱”,说明正则或Excel数据有问题,需要调整正则表达式,或检查Excel中邮箱的存储格式(比如是否是纯文本)。
  • 如果显示未处理任何文件,说明folder_path下没有符合后缀的Excel文件,检查路径是否正确。

第二步:处理无数据时的空文件生成

如果确实没有提取到邮箱,希望保留空文件,在脚本最后添加:

print(f"Extracted email addresses written to {output_csv_file}")
# 新增:如果文件不存在则创建空文件
if not os.path.exists(output_csv_file):
    open(output_csv_file, 'w').close()
    print("未提取到任何邮箱,已创建空CSV文件")

第三步:排查权限与杀毒软件问题

  • 尝试以管理员身份运行Python脚本,看是否能生成文件。
  • 临时关闭杀毒软件,或把Py_out文件夹和脚本所在目录加入杀毒软件白名单。
  • 修改输出路径为桌面根目录:output_csv_file = r'C:\Users\HAL-2023\Desktop\output_emails.csv',测试是否能生成文件。

第四步:优化正则表达式(如果邮箱提取失败)

原正则可能无法匹配部分特殊格式的邮箱,比如带连字符的域名,或新顶级域名(如.dev、.app),可以替换为更兼容的正则:

email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b'

内容的提问来源于stack exchange,提问作者Abhishek Anand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:20:15