【问题标题】:Python - working with .csv-filesPython - 使用 .csv 文件
【发布时间】:2015-11-28 23:00:58
【问题描述】:

我有一个包含大量数据的 .csv 文件。 我试图打开它:

import csv

filename = raw_input('Your filename: ')
with open(filename,'r') as myFile:
  dataFromFile = csv.reader(myFile)
  print dataFromFile

据我所知csv.reader 将文件中的数据转换为列表。

我想打开文件 2015-09-02_17:59:43.csv 但我得到以下错误:

IOError: [Errno 2] No such file or directory: '2015-09-02_17:59:43.csv '

好的,我google了一下,发现堆栈溢出问题如下:Trying to use open( filename, 'w' ) gives IOError: [Errno 2] No such file or directory: 所以我从那里尝试了解决方案。 但是后来我又遇到了一个错误:

OSError: [Errno 2] No such file or directory: ''

然后我将我的文件重命名为 timestamp.csv,因为我很好奇这个名称是否可能是一个问题并尝试了我的第一个解决方案。 突然间可以找到该文件,但作为打印输出,我得到以下信息: <_csv.reader object at 0x104c88a60>。我想如果我打印出dataFromFile,它会显示整个列表。

所以这里的第一个问题是:<_csv.reader object at 0x104c88a60> 是否意味着该列表太长而无法显示,所以它只是告诉我我有什么对象?

第二个问题:为什么我之前的解决方法没有奏效?

我发现了一个小解决方法:

for currentRow in dataFromFile:
 print currentRow

所以一行一行的打印出来。但不完全是我想要的。

最后但并非最不重要的一点是,我想将我的列表转换为 numpy 数组,最简单的方法是什么?

编辑 我已经为我的最后一个问题找到了答案和方法,我猜这很容易:

 import numpy as np
 np.array(dataFromFile)

【问题讨论】:

    标签: python file csv numpy


    【解决方案1】:

    据我所知,csv.reader 将文件中的数据转换为 列表。

    这是错误的假设。

    来自 Python 文档 here,csv.reader:

    返回一个读取器对象,它将遍历给定 csvfile 中的行。

    它是一个迭代器,而不是一个列表。因此,您得到一个 csv.reader 对象。如果你这样做了

    list(dataFromFile)
    

    它会显示你所期望的。

    编辑:解决您的编辑问题,我认为您正在寻找类似 @​​987654322@ 的内容。本质上,numpy 中的 genfromtxt() 完成了您尝试将 CSV 转换为 numpy 数组的操作。

    附:一般来说,如果主题完全不同,您可能应该问另一个问题——保持主题更清晰,让您的问题不再是一个移动目标

    【讨论】:

    • 感谢您的帮助。你也知道为什么我的第一次尝试没有成功吗?
    • @Sascha 在您的错误代码中.csv 之后有一个额外的空格。您输入了错误的文件名。
    【解决方案2】:

    csv.reader 函数不返回列表,它返回一个迭代器对象,您可以使用它来逐行获取。如果您想获取行列表,只需这样做:

    #get list of lines
    lines = open("your file").readlines()
    #if you want to get the list with the values of each line separated by ',' you can do it like this:
    lines2 = [line.split(',') for line in open("your file").readlines()]
    

    【讨论】:

      猜你喜欢
      • 2022-01-16
      • 2021-09-28
      • 2011-08-12
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多