0

我的应用程序有多个 csv 文件。我试图通过读取 csv 文件来获取行数和列数。我有两个通过参数 file_path 发送的 csv 文件。第一个文件有 5 行和 3 列,第二个文件有 5 行和 5 列。但是使用下面的代码,我得到First file with 4 rows and 3 columns 和 Second file with 4 rows and 5 columns。我不明白为什么它会跳过从行数中读取一行。
另一方面,如果我先执行 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)
4

3 回答 3

0

问题是文件有位置的概念。当您打开它时,该文件位于开头。让我们通过您的来源:

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)))添加已读取的第一行。

于 2021-04-01T08:29:23.983 回答
0

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

reader = list(csv.reader(f))

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

于 2021-04-01T08:15:06.417 回答
0
import numpy
numpy.genfromtxt('path/to/your/csv/file.csv').shape

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

于 2021-04-01T08:15:46.273 回答