如何用Python将新数据写入CSV新行?代码问题排查
问题排查与修复
核心问题1:文件打开模式错误
你用了mode="w"(写入模式)打开CSV文件,这个模式每次启动都会清空文件原有内容,从头开始写入,导致新数据永远覆盖第一行。正确做法是使用追加模式mode="a",这样新数据会自动添加到文件末尾的新行。
核心问题2:writerows用法错误
writerows()需要接收包含多行数据的可迭代对象(比如[[行1数据], [行2数据]]),但你传入的[results[0]]如果是单个字符串/值,会被拆分成单个字符逐个填入单元格。应该用writerow()(单数)来写入单行数据,确保整行内容被正确写入。
修正后的代码片段
把CSV写入部分替换成以下代码:
csv_file = "output.csv" # 以追加模式打开文件,newline=""避免多余空行 with open(csv_file, mode="a", newline="") as file: writer = csv.writer(file) # 将结果和时间戳作为一行写入(匹配你打印的内容) writer.writerow([results[0], formatted_timestamp])
额外优化建议
- 列表赋值问题:
check = results是引用赋值,后续results更新会同步改变check的值,应该改成check = results.copy()或check = list(results),确保判断逻辑准确。 - 异常捕获:你的
except没有指定具体异常类型,容易掩盖其他错误,建议改为except requests.exceptions.RequestException:来捕获API请求相关异常。
内容的提问来源于stack exchange,提问作者Marco Almeida
相关产品推荐
相关产品推荐

