Python - working with .csv-files
我有一个.csv文件,里面有很多数据。我试着打开它:
1 2 3 4 5 6 | import csv filename = raw_input('Your filename: ') with open(filename,'r') as myFile: dataFromFile = csv.reader(myFile) print dataFromFile |
据我所知,
我想打开文件
1 | IOError: [Errno 2] No such file or directory: '2015-09-02_17:59:43.csv ' |
好的,我在google上找到了关于堆栈溢出的以下问题:试图使用open(文件名'w')会产生ioerror:[errno 2]没有这样的文件或目录:所以我从那里尝试了解决方案。但后来我又犯了一个错误:
1 | OSError: [Errno 2] No such file or directory: '' |
然后我将文件重命名为timestamp.csv,因为我很好奇这个名称是否是一个issus,并尝试了我的第一个解决方案。突然间,文件被找到了,但作为打印输出,我得到了以下信息:
所以这里的第一个问题是:这个
第二个问题:为什么我以前没有尝试解决工作?
我找到了一个解决方法:
1 2 | for currentRow in dataFromFile: print currentRow |
所以一行接一行打印出来。但不完全是我想要的。
最后但并非最不重要的是,我想把我的列表转换成一个麻木的数组,最简单的方法是什么?
编辑我已经找到了最后一个问题的答案和方法,我想这很容易:
1 2 | import numpy as np np.array(dataFromFile) |
As far as I know csv.reader converts the data from the file into a
list.
这是错误的假设。
从这里的python文档csv.reader:
Return a reader object which will iterate over lines in the given csvfile.
它是一个迭代器,而不是一个列表。因此,您得到一个csv.reader对象。如果你这样做了
1 | list(dataFromFile) |
它将显示您所期望的。
编辑:写下你的编辑,我想你正在从这篇文章中寻找类似的东西。从本质上讲,numpy中的
总的来说,如果话题完全不同,你应该问另一个问题——保持话题的整洁,使你的问题不再是一个移动的目标。
csv.reader函数不返回列表,它返回一个迭代器对象,可用于逐行获取。如果你想得到一个行列表,就这样做:
1 2 3 4 | #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()] |