首页 > 解决方案 > 在 Python 中读取 CSV 时出现 ValueError

问题描述

我在 Python 中执行一些简单的 IO 任务时遇到了一些问题,我找不到解决方案……我想这很简单。

我尝试使用 csv 阅读器读取 CSV。首先,我想计算为 numpy 数组分配空间的行数,然后我想读入实际值。

此方法在 tkinter gui 中的按钮事件的操作方法中调用。

我使用 .seek() 方法重置了文件,但不知何故我总是收到以下错误:

文件“...”,第 14 行,read_csv 中 xy 中的行:ValueError:对已关闭文件的 I/O 操作。

我无法弄清楚问题是什么......

令人困惑的是,当我在调试模式下运行代码时,它运行良好,但在正常模式下运行时却失败了。如果这很重要,我会使用 pyCharm。

import csv
import numpy as np

def read_csv(fileName):

    with open(fileName) as data:

        xy = csv.reader(data, delimiter=',')
        dim = sum(1 for cc in xy)
        x = np.zeros(dim)
        y = np.zeros(dim)
        data.seek(0)
        count = 0
        for row in xy:
            x[count] = row[0]
            y[count] = row[1]
            count = count + 1

    return x,y,count

编辑:

这是调用例程:

def clicked_ReadCSV():

    filename = "xy.csv"
    x,y,count = read_csv(filename)

##################################

root = tk.Tk()
root.title('Test')

f0 = tk.Frame()
lblFile = tk.Label(f0, text = "Enter input-file name with suffix:")
lblFile.pack(side = tk.LEFT)
entryFile = tk.Entry(f0, width = 60)
entryFile.pack(side = tk.LEFT)
bFile = tk.Button(f0, text = "Read File", command = clicked_ReadCSV)
bFile.pack(side = tk.LEFT)
entryFile.focus()
f0.pack()

按钮操作命令 clicked_ReadCSV 调用上面显示的例程。

标签: pythoncsvpycharmioexceptionvalueerror

解决方案


推荐阅读