迁移代码后无法将Pandas DataFrame保存为CSV文件,求排查
问题排查:拆分Python文件后CSV无法正常保存
原问题:原本在Jupyter Notebook中可以正常将外部模块抓取的数据保存为.csv文件,拆分到两个Python文件后无法正常保存,代码如下:
from datetime import datetime import csv import pandas as pd import MixcloudScraperDiscoverFunc as search terms = ['house', 'trance', 'techno'] discover = search.MixCloudDiscover() discover_data = discover.discover(terms) now = datetime.now() # print(mixcloud_data) fields = ['Link', 'Curator', 'Followers', 'Bio', 'Location', 'Twitter'] currentDateTime = datetime.now().strftime("%m-%d-%Y %H-%M-%S %p") mixcloud_df = pd.DataFrame.from_dict(discover_data) mixcloud_df.to_csv( f"Mixcloud_Data_{str(terms)}_{currentDateTime}.csv", index=False )
排查步骤:
验证抓取数据格式
pd.DataFrame.from_dict()要求输入为规范的字典结构(如列表嵌套字典、或字典嵌套列表)。如果discover.discover(terms)返回的数据格式不符合预期,会导致DataFrame为空或结构异常,进而保存失败。取消注释print(discover_data),查看输出是否包含fields中定义的所有字段,且数据结构符合要求。修正文件名特殊字符
当前文件名包含str(terms)生成的['house', 'trance', 'techno'],其中的方括号、逗号属于系统不允许的特殊字符,会导致文件创建失败。将文件名中的str(terms)替换为'-'.join(terms),生成合法文件名:
mixcloud_df.to_csv( f"Mixcloud_Data_{'-'.join(terms)}_{currentDateTime}.csv", index=False )
检查文件写入权限
确认脚本运行目录是否允许创建文件。可以尝试指定绝对路径保存(如"/Users/xxx/Documents/Mixcloud_Data_..."或"C:/Temp/Mixcloud_Data_..."),排除权限不足的问题。确认模块导入与方法有效性
检查MixcloudScraperDiscoverFunc.py中的MixCloudDiscover类是否正确定义,discover方法是否能正常返回数据。可以在主脚本中添加调试代码:
print(dir(search)) # 查看模块中是否存在MixCloudDiscover类 test_data = discover.discover(['test']) print(test_data) # 验证单关键词抓取是否正常
- 捕获具体错误信息
在保存CSV的代码块外添加异常捕获,直接获取错误原因:
try: mixcloud_df.to_csv( f"Mixcloud_Data_{'-'.join(terms)}_{currentDateTime}.csv", index=False ) print("CSV文件保存成功") except Exception as e: print(f"保存失败,错误详情:{str(e)}")
内容的提问来源于stack exchange,提问作者MOK_Z
相关产品推荐
相关产品推荐

