You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python写入文件无报错却生成空文件(Excel打开为空)求助

解决CSV文件在Excel中显示为空的问题

嘿,我知道你遇到的麻烦了——代码跑起来控制台能正常输出数据,但用Excel打开生成的文件就是空的对吧?这其实是两个常见小问题导致的:编码格式不兼容文件名缺少后缀,咱们一步步来修复:

问题原因分析

  1. 编码问题:Python默认用UTF-8编码写入文件,但Excel默认识别带BOM头的UTF-8(也就是UTF-8-SIG),没有BOM的话Excel会读不出内容。
  2. 文件名后缀:你生成的文件没有.csv后缀,Excel可能无法正确识别这是CSV格式文件,导致显示异常。

修改后的代码

import csv
import urllib.request
from bs4 import BeautifulSoup

# 1. 加上.csv后缀,指定utf-8-sig编码,自动添加BOM头
with open('aapl_analyst_estimates.csv', 'w', newline='', encoding='utf-8-sig') as f:
    writer = csv.writer(f)
    soup = BeautifulSoup(urllib.request.urlopen('https://www.marketwatch.com/investing/stock/aapl/analystestimates').read(), 'lxml')
    tbody = soup('table', {'class':'snapshot'})[0].find_all('tr')
    
    for row in tbody:
        cols = row.findChildren(recursive=False)
        cols = [ele.text.strip() for ele in cols]
        writer.writerow(cols)
        print(cols)

关键修改点说明

  • 把文件名改成aapl_analyst_estimates.csv,让Excel明确识别这是CSV文件。
  • 打开文件时添加encoding='utf-8-sig',这样写入的文件会带UTF-8 BOM头,Excel能正确解析内容。
  • with语句管理文件,不用手动调用f.close(),更安全还能避免忘记关闭文件导致的写入不完整。

你试试运行修改后的代码,再用Excel打开生成的文件,应该就能看到正常的数据啦!

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

火山引擎 最新活动