我試圖打開一個文件使用with
語法,同時也枚舉文件的行。使用索引,打開(文件)作爲枚舉(文件指針)
所以,我想這一點:
with index, open(filename) as enumerate(f):
f.read()...
凡f
意味着對應open(filename)
,並index
應採取enumerate(f)
。所以我希望能夠在正文中調用f.read()
,並知道正在處理文件的哪一行。
我確信這可以完成 - 我只是沒有正確地使用語法。任何幫助?
我試圖打開一個文件使用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
字符串中的全部內容,並將其存儲,所以你不能就能夠以這種方式獲得線路號碼。
with_stmt ::= "with" with_item ("," with_item)* ":" suite with_item ::= expression ["as" target]
的with語句用一個「項目」收益爲 執行如下:
您不能
enumerate
呼叫與with
聲明,因爲language's grammar just doesn't allow it結合
上下文表達式(在with_item中給出的表達式)是 求值以獲得上下文管理器。
上下文管理器的
__exit__()
被加載供以後使用。上下文管理器的
__enter__()
方法被調用。如果
target
被列入with語句,從__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):