Python为什么第二个for循环从第二行开始

2024-09-30 22:20:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个for循环,第一个循环通过csv阅读器,第二个循环通过csv阅读器。打印结果时,我看到第一个从第一行开始,第二个从第二行开始,我不知道为什么,因为这是一个新循环。当我注释掉第一行时,第二行通常从第一行开始。代码如下:

csvFile = open('contactscsv.csv', 'r')
headerReaderReader = csv.reader(csvFile)
headerReaderDict = csv.DictReader(csvFile)

for row in headerReaderReader:
    print(row)
    break

for row in headerReaderDict:
    print(row)
    break


Tags: csvcsvfile代码inforopenreaderrow
1条回答
网友
1楼 · 发布于 2024-09-30 22:20:55

您正在读取同一个打开的文件对象,因此第一个headerReaderReader = csv.reader(csvFile)从第一个未读行开始,而headerReaderDict = csv.DictReader(csvFile)从下一个未读行开始。如果您将它们重新排序为

headerReaderDict = csv.DictReader(csvFile)
headerReaderReader = csv.reader(csvFile)

for row in headerReaderReader:
    print(row)
    break

for row in headerReaderDict:
    print(row)
    break

然后headerReaderReader将从第二行开始,而headerReaderDict将从第一行开始

如果确实需要打开同一文件的两个副本,则需要维护两个不同的对象,以避免共享同一指针:

with open('contactscsv.csv', 'r') as csv1, open('contactscsv.csv', 'r') as csv2:
    headerReaderReader = csv.reader(csv1)
    headerReaderDict = csv.DictReader(csv2)

相关问题 更多 >