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

Python读取CSV股票名生成URL后写入新CSV仅存最后一条如何解决

问题解决方案

错误原因

  • 循环内的urls_link变量每次迭代都会被新值覆盖,循环结束后仅存储最后一条生成的URL
  • 写文件的操作放在循环外,只会写入最终存储的最后一条URL

修正后的代码(推荐写法)

使用with上下文自动管理文件,无需手动调用close,稳定性更高:

# 先收集所有生成的URL
urls = []
with open('names.csv', 'r', encoding='utf-8') as datafile:
    for line in datafile:
        # 先去除股票名的换行和空白,再拼接域名,避免URL带多余字符
        stock_code = line.strip()
        if stock_code:  # 跳过空行
            urls_link = f'https://ceo.ca/{stock_code}\n'  # 加换行符实现逐行写入
            urls.append(urls_link)
            print(urls_link.strip())

# 统一写入文件
with open("url.csv", "w", encoding='utf-8') as f:
    f.writelines(urls)

可选写法:循环内逐行写入

适合处理数据量极大的场景,无需占用内存存储全量URL:

with open('names.csv', 'r', encoding='utf-8') as datafile, open("url.csv", "w", encoding='utf-8') as outfile:
    for line in datafile:
        stock_code = line.strip()
        if stock_code:
            urls_link = f'https://ceo.ca/{stock_code}'
            print(urls_link)
            outfile.write(urls_link + '\n')

注意说明

  • 拼接URL前先对读取的行做strip()处理,可以避免股票名带换行符导致生成的URL异常
  • 写入时末尾加\n可以保证每个URL单独占一行,符合CSV逐行存储的要求
  • 显式指定encoding='utf-8'可以避免不同系统下的编码兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 06:42:03