【发布时间】:2015-05-13 20:27:28
【问题描述】:
阅读 csv,我发现如果我的 with 块中有任何前面的语句,我将无法遍历行。
例如,如果我这样做:
with open (TargetFile) as source:
Strings = csv.reader(source)
for row in Strings:
print Strings.line_num
我会将整数 1 -(行数)打印到控制台。 (没用,是的,但我只是用明显的东西测试for。)
但是,假设我要随机抓取一行。我想首先确定行数并在该范围内生成一个随机数,然后遍历行以搜索匹配的 line_num。
(在这里,我保留了无用的print Strings.line_num 以避免引入新的错误。)
with open (TargetFile) as source:
Strings = csv.reader(source)
CSV_Length = sum(1 for row in Strings)
print CSV_Length
RandRow = random.randrange(1,CSV_Length)
print RandRow
for row in Strings:
print Strings.line_num
#replace ^ with actually useful code
会将 csv 文件中的行数和该范围内的随机整数打印到控制台 - 一切都符合预期 - 但不会调用(以前工作的)for 循环。没有那个循环,我就无法找到有用和有趣的部分
我在这里错过了什么?
【问题讨论】: