【发布时间】:2019-07-30 11:56:17
【问题描述】:
这感觉像是一个愚蠢的错误,但我无法发现它。当我执行这段代码时:
with open('test.csv') as csvfile:
# row_count = sum(1 for row in csvfile)
reader = csv.DictReader(csvfile, delimiter = ';')
path = os.getcwd() # ← gets current directory
for row in reader:
header = row['FirstName'] + ' ' + row['Surname'] + ' – #' + row['RecruitmentID'].zfill(5)
print('Processing: ' + ' / ' + header)
我得到的是:
Processing: / AAA aaa – #00005
Processing: / BBB bbb – #00008
Processing: / CCC ccc – #00160
[Finished in 0.3s]
但是当我取消注释 # row_count = sum(1 for row in csvfile) 时,我只会在控制台中得到 [Finished in 0.3s]。
即使使用另一种方法:numberofrows = len(list(reader)) 也会以同样的方式破坏它。我做错了什么?
【问题讨论】:
-
在执行
row_count = sum(1 for row in csvfile)时,您会转到文件的末尾,这样 csv 阅读器不会做其他任何事情,请尝试执行csvfile.seek(0),这应该会让您回到文件的开头文件,在创建 csv 阅读器之前 -
@LohmarASHAR 哦,就是这样!谢谢,我是处理流和文件的新手……
-
离题:当您提出问题并编写一些示例代码时,请尽量减少。导入
pypdftk或path = os.getcwd()会使其他用户阅读过多与您的问题无关的代码(并考虑一下)。谢谢。 -
@eumiro 也许你是对的,但我并不是完全不知道是哪一部分导致了这种行为。为清楚起见,编辑器。
标签: python python-3.x csv dictionary