![](/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.