Python 未将数据传递给for循环中的变量
我有以下代码Python 未将数据传递给for循环中的变量,python,python-3.x,for-loop,Python,Python 3.x,For Loop,我有以下代码 with open('data.csv') as csvfile: data = csv.reader(csvfile, delimiter=' ') print(data) row_count = row_count = sum(1 for lines in data) print(row_count) for row in data: print(row) 它打印: <_csv.reader object at 0
with open('data.csv') as csvfile:
data = csv.reader(csvfile, delimiter=' ')
print(data)
row_count = row_count = sum(1 for lines in data)
print(row_count)
for row in data:
print(row)
它打印:
<_csv.reader object at 0x00000295CB6933C8>
505
因此,它将数据作为对象打印,并将行数打印为505。只是似乎没有打印for循环中的行。我不确定为什么没有任何东西被传递到变量行
这尤其令人沮丧,因为如果我去掉row_count,它会工作!为什么?
您只需读取整个文件;您已耗尽输入。你的第二个孩子找不到了。你必须重新设置读卡器。最明显的方法是关闭文件并重新打开。不太明显。。。而且不太灵活。。。是将文件指针重置为开头,使用
csvfile.seek(0)
这并不适用于所有文件子类型,但适用于CSV
更妙的是,打印时只需数一数行:
使用打开的“data.csv”作为csvfile:
data=csv.readercsv文件,分隔符=“”
row_count = 0
for row in data:
print(row)
row_count += 1
print(row_count)
您只需读取整个文件;您已耗尽输入。你的第二个孩子找不到了。你必须重新设置读卡器。最明显的方法是关闭文件并重新打开。不太明显。。。而且不太灵活。。。是将文件指针重置为开头,使用
csvfile.seek(0)
这并不适用于所有文件子类型,但适用于CSV
更妙的是,打印时只需数一数行:
使用打开的“data.csv”作为csvfile:
data=csv.readercsv文件,分隔符=“”
row_count = 0
for row in data:
print(row)
row_count += 1
print(row_count)
您使用集合中已有的数据中的行:
with open('data.csv') as csvfile:
data = csv.reader(csvfile, delimiter=' ')
print(data)
row_count = row_count = sum(1 for lines in data) # This consumes all of the rows
print(row_count)
for row in data: # no more rows at this point.
print(row) # doesn't run because there are no more rows left
如果要在打印每一行之前打印计数,则必须将所有行保存在内存中或创建第二个CSV reader对象。您使用了已设置的数据中的行:
with open('data.csv') as csvfile:
data = csv.reader(csvfile, delimiter=' ')
print(data)
row_count = row_count = sum(1 for lines in data) # This consumes all of the rows
print(row_count)
for row in data: # no more rows at this point.
print(row) # doesn't run because there are no more rows left
如果要在打印每一行之前打印计数,您必须将所有行保存在内存中,或者创建第二个CSV reader对象。如果您有一些内存可供使用,将这些数据制作成一个列表并将其写入,这可能是最好的解决方案
with open('your_csv.csv','r') as f_:
reader=csv.reader(f_)
new_list=list(reader)
for row in new_list:
print(row) #or whatever else you want to do afterwards
如果你有足够的内存可以使用,将这些数据列成一个列表并通过它来避免所有的麻烦,这可能是最好的解决方案
with open('your_csv.csv','r') as f_:
reader=csv.reader(f_)
new_list=list(reader)
for row in new_list:
print(row) #or whatever else you want to do afterwards
我不知道reader是如何实现的,但很有可能在你遍历它,计算行数之后,它就用光了,没有更多的东西可以迭代了。我不知道reader是如何实现的,但很可能在你遍历它,计算行数之后,它就用光了,没有更多的东西可以迭代了。或者,您可以在同一个for循环中打印行数,也可以在同一个for循环中打印行数。