Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 未将数据传递给for循环中的变量_Python_Python 3.x_For Loop - Fatal编程技术网

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循环中打印行数。