![](/img/trans.png)
[英]How to decode binary file with " for index, line in enumerate(file)"?
[英]With index, open(file) as enumerate(filepointer)
我正在尝试使用with
语法打开文件with
同时还要枚举文件的行。
所以我尝试了这个:
with index, open(filename) as enumerate(f):
f.read()...
其中f
表示对应于open(filename)
,而index
应该采用enumerate(f)
。 因此,我希望能够在主体中调用f.read()
,并知道文件的哪一行正在处理。
我敢肯定这是可以做到的-我只是没有正确使用语法。 有什么帮助吗?
我认为最有效的Python与您尝试的最接近的是:
with open(filename) as f:
for index, line in enumerate(f):
# Do stuff with each line.
f.read()
读取f
的全部内容并将其存储在字符串中,因此您将无法以这种方式获取行号。
您不能将enumerate
调用与with
语句结合使用with
因为该语言的语法不允许这样做 :
with_stmt ::= "with" with_item ("," with_item)* ":" suite with_item ::= expression ["as" target]
用一个“项目”执行with语句的过程如下:
计算上下文表达式(with_item中给出的表达式)以获得上下文管理器。
上下文管理器的
__exit__()
已加载以供以后使用。上下文管理器的
__enter__()
方法被调用。如果with语句中包含
target
,则将__enter__()
的返回值分配给它。
target
是要为open(filename)
的返回值分配的变量。 不能是函数调用。
您似乎将with
语句与for
语句混淆了。 在
for i, x in enumerate(lst):
i
和x
设置为从enumerate
创建的迭代器获得的值。 在
with open(filename) as f:
f
分配了open
的返回值。
您不能将两者混在一起。 您需要使用两个单独的语句:
with open(filename) as f:
for index, line in enumerate(f):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.