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

如何将Python脚本处理结果保存至指定CSV文件?

解决CSV文件处理后无法保存的问题

我来帮你搞定这个问题,你的代码里有几个关键错误导致无法正常保存处理结果,咱们一步步梳理并修正:

问题分析

  1. 文件打开模式错误:你用open(str(sys.argv[1]))打开文件时,默认是只读模式('r'),这种模式下根本无法写入内容。
  2. 错误调用方法:文件对象并没有append()方法——append()是Python列表的专属方法,你把列表的方法用到了文件对象上,自然会报错。
  3. 读写冲突:在遍历读取文件的同时尝试修改同一个文件,会导致文件指针混乱,很容易出现数据丢失或异常。

解决方案

我们可以分成两步处理:先读取并处理所有行数据,再将处理后的内容写入目标文件(可以选择覆盖原文件,或者生成新文件保留原数据)。

方案1:覆盖原文件(直接更新输入的CSV)

import sys

# 第一步:读取所有内容并处理
processed_content = []
# 用with语句自动管理文件,避免资源泄漏
with open(sys.argv[1], 'r') as input_file:
    for line in input_file:
        # 去除行尾换行符,追加指定内容
        added_str = line.rstrip() + ',09,00,17'
        # 替换年份格式,把"20,"改成"2020,"
        final_str = added_str.replace("20,", "2020,")
        # 把处理后的行加入列表,记得补回换行符
        processed_content.append(final_str + '\n')

# 第二步:将处理后的内容写入原文件
with open(sys.argv[1], 'w') as output_file:
    output_file.writelines(processed_content)

方案2:生成新文件(保留原CSV)

如果你不想覆盖原文件,可以把处理后的内容写入一个新文件,比如在原文件名后加_processed后缀:

import sys
import os

# 获取原文件路径和文件名
input_path = sys.argv[1]
file_name, ext = os.path.splitext(input_path)
output_path = f"{file_name}_processed{ext}"

processed_content = []
with open(input_path, 'r') as input_file:
    for line in input_file:
        added_str = line.rstrip() + ',09,00,17'
        final_str = added_str.replace("20,", "2020,")
        processed_content.append(final_str + '\n')

with open(output_path, 'w') as output_file:
    output_file.writelines(processed_content)

额外优化:拆分多日期行

如果你的CSV每行包含多个日期(比如3/4/20 3/5/20 3/6/20),想要把每个日期单独成行处理,可以这样修改:

import sys

processed_content = []
with open(sys.argv[1], 'r') as input_file:
    for line in input_file:
        # 拆分每行的多个日期
        dates = line.rstrip().split()
        for date in dates:
            # 处理单个日期
            added_str = date + ',09,00,17'
            final_str = added_str.replace("20", "2020")
            processed_content.append(final_str + '\n')

with open(sys.argv[1], 'w') as output_file:
    output_file.writelines(processed_content)

这样处理后,原来的一行多日期会变成每行一个处理后的条目:

3/4/2020,09,00,17
3/5/2020,09,00,17
3/6/2020,09,00,17

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:22:05