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

Python3读取CSV文件循环解析时遇文件已关闭错误求助

解决Python读取CSV时"I/O operation on closed file"错误

问题原因

你的代码核心错误是**for row in reader循环缩进错误**,放在了with代码块外面。with语句的特性是代码块执行完毕后会自动关闭文件,这时候再去遍历reader就会触发文件已关闭的IO错误。

另外还有一个隐性问题:api.submit_order(row['x'], row['y'], row['z'])写法错误,csv.reader返回的是列表对象,不是字典,不能用键名访问,必须用索引(比如row[0]、row[1])。

修正后的代码

把循环缩进至with代码块内部,同时修正API调用的参数访问方式:

import csv

with open('out.txt', "r") as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    x = []
    y = []
    z = []
    for row in reader:
        x.append(row[0])
        # 把数量字符串转成整数(多数交易API要求数值类型)
        y.append(int(row[1]))
        z.append(row[2])
        # 按API要求传递参数,注意参数顺序和类型匹配
        api.submit_order(
            symbol=row[0],
            qty=int(row[1]),
            side=row[2],
            type='market',
            time_in_force='day'
        )

拓展:在其他函数中解析数据

如果需要把读取到的数组传递到另一函数解析,可以先在with块内完成数据读取,再调用目标函数:

import csv

def parse_and_execute(symbols, quantities, sides):
    # 这里是你的解析逻辑,比如遍历数据执行订单
    for sym, qty, side in zip(symbols, quantities, sides):
        api.submit_order(
            symbol=sym,
            qty=qty,
            side=side,
            type='market',
            time_in_force='day'
        )

# 读取CSV数据存入数组
with open('out.txt', "r") as csvfile:
    reader = csv.reader(csvfile, delimiter=',')
    x = []
    y = []
    z = []
    for row in reader:
        x.append(row[0])
        y.append(int(row[1]))
        z.append(row[2])

# 调用外部函数解析执行
parse_and_execute(x, y, z)

内容的提问来源于stack exchange,提问作者Richard Pagotto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:30:30