Python写入文件无报错却生成空文件(Excel打开为空)求助
解决CSV文件在Excel中显示为空的问题
嘿,我知道你遇到的麻烦了——代码跑起来控制台能正常输出数据,但用Excel打开生成的文件就是空的对吧?这其实是两个常见小问题导致的:编码格式不兼容和文件名缺少后缀,咱们一步步来修复:
问题原因分析
- 编码问题:Python默认用UTF-8编码写入文件,但Excel默认识别带BOM头的UTF-8(也就是UTF-8-SIG),没有BOM的话Excel会读不出内容。
- 文件名后缀:你生成的文件没有
.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




