如何获取在python中导入的csv文件的行和列?

问题描述

我的应用程序有多个 csv 文件。我试图通过读取 csv 文件获取行数和列数。我有两个通过参数 file_path 发送的 csv 文件一个文件有 5 行 3 列,第二个文件有 5 行 5 列。但是使用下面的代码我得到一个文件有 4 行和 3 列,第二个文件有 4 行和 5 列。我不明白为什么它跳过从行数中读取一行。
另一方面,如果我先执行 row_count 和 col_count 的代码,它会给出 stopiteration 异常。
这可能是一个非常简单的问题,但对于我是 Python 新手,非常感谢任何帮助.谢谢

def read_text_file(file_path):
    with open(file_path,'r') as f:
        reader = csv.reader(f)
        col_count = len(next(reader))
        print(col_count)       
        row_count = len(list(csv.reader(f)))
        print(row_count)

解决方法

读取 CSV 并将其存储在列表中

reader = list(csv.reader(f))

这会将 csv 数据转换为二维数组,然后您可以使用 len() 函数。

,
import numpy
numpy.genfromtxt('path/to/your/csv/file.csv').shape

应该告诉你作为元组的行数和列数。

,

问题在于文件具有位置的概念。当你打开它时,文件被亲切地定位在开头。让我们来看看你的来源:

def read_text_file(file_path):
    with open(file_path,'r') as f:           // file is opened,pointing at first char
        reader = csv.reader(f)                // reader will use file
        col_count = len(next(reader))         // next(reader) READS FIRST ROW...
        print(col_count)                      // file is now after the first row!
        row_count = len(list(csv.reader(f)))  // read remaining rows
        print(row_count)                      // number of rows minus 1...

您应该使用 row_count = 1 + len(list(csv.reader(f))) 添加已读取的第一行。