Python file.csv 在列表中读取和转换

Python file.csv read and transform in list

这只是好奇,我是 python 初学者。我来自巴西。如果我执行我的代码,在这一步 reader_list = list (reader) 不起作用,不要转换列表中的文件。如果我注释“for”块,没关系,它是列表中的transform var reader。我想知道如果打开文件并操作它,是否需要再次打开,因为如果我在另一个var中再次打开并重复步骤,就可以了。

这是我的代码:

import csv

file = open("planilha.csv", "r")
reader = csv.reader(file)

print(reader)
print(type(reader))

for row in reader:
    print(row)   

print("\n==================", end="\n\n")

reader_list = list(reader)
print("Keys:\t", reader_list[0])
print("Row 1:\t", reader_list[1])
print("Row 2:\t", reader_list[2])

file.close()

输出:

>>> %Run file_exemplo_pros_mano.py
>>> %Run file_exemplo_pros_mano.py
<_csv.reader object at 0x03D06870>
<class '_csv.reader'>
['Nome', 'Sobrenome', 'Sexo', 'Idade', 'Altura']
['Tiago', 'San Martin', 'Masculino', '34', '1.72']
['Tiago', 'San Martin', 'Masculino', '34', '1.73']
['Tiago', 'San Martin', 'Masculino', '34', '1.74']
['Tiago', 'San Martin', 'Masculino', '34', '1.75']
['Tiago', 'San Martin', 'Masculino', '34', '1.76']
['Tiago', 'San Martin', 'Masculino', '34', '1.77']

==================

Traceback (most recent call last):
  File "C:\Users\tiago.martin\Documents\LetsCode_Python\file_exemplo_pros_mano.py", line 17, in <module>
    print("Keys:\t", reader_list[0])
IndexError: list index out of range
>>> 

好的,如果评论“for row in reader: print(row)”:

>>> %Run file_exemplo_pros_mano.py
<_csv.reader object at 0x041B5870>
<class '_csv.reader'>

==================

Keys:    ['Nome', 'Sobrenome', 'Sexo', 'Idade', 'Altura']
Row 1:   ['Tiago', 'San Martin', 'Masculino', '34', '1.72']
Row 2:   ['Tiago', 'San Martin', 'Masculino', '34', '1.73']
>>> 

cvs.reader returns 一个迭代器。在您使用完 for 循环中的所有行后,迭代器就用完了。它在尽头。因此,调用 list(reader) 会产生一个空列表。如果你想运行多次遍历文件,首先将其转换为列表,然后你可以重复使用列表。