我需要逐行讀取檔案,readline()并且無法輕易更改。大致是這樣的:
with open(file_name, 'r') as i_file:
while True:
line = i_file.readline()
# I need to check that EOF has not been reached, so that readline() really returned something
真正的邏輯更復雜,所以我無法立即讀取檔案readlines()或撰寫類似for line in i_file:.
有沒有辦法檢查readline()EOF?它可能會拋出例外嗎?
在互聯網上很難找到答案,因為檔案搜索重定向到了一些不相關的內容(教程而不是參考或 GNU 閱讀線),而且互聯網上的噪音主要是關于readlines()功能的。
該解決方案應該適用于 Python 3.6 。
uj5u.com熱心網友回復:
使用這個我建議:
fp = open("input")
while True:
nstr = fp.readline()
if len(nstr) == 0:
break # or raise an exception if you want
# do stuff using nstr
正如Barmar在評論中提到的,readline“在 EOF 處回傳一個空字串”。
uj5u.com熱心網友回復:
從檔案:
f.readline()從檔案中讀取一行;換行符 (\n) 留在字串的末尾,如果檔案不以換行符結尾,則僅在檔案的最后一行省略。這使得回傳值明確;如果f.readline()回傳空字串,則表示已到達檔案末尾,而空行由 表示'\n',一個僅包含一個換行符的字串。
with open(file_name, 'r') as i_file:
while True:
line = i_file.readline()
if not line:
break
# do something with line
uj5u.com熱心網友回復:
在 EOF 的情況下回傳的空字串評估為False,因此這可能是海象運算子的一個很好的用例:
with open(file_name, 'r') as i_file:
while line := i_file.readline():
# do something with line
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/324120.html
