[英]confused about the readline() return in Python
我是python的初學者。 但是,當我嘗試使用readline()方法時遇到一些問題。
f=raw_input("filename> ")
a=open(f)
print a.read()
print a.readline()
print a.readline()
print a.readline()
我的txt文件是
aaaaaaaaa
bbbbbbbbb
ccccccccc
但是,當我嘗試在Mac終端上運行它時,得到了以下信息:
aaaaaaaaa
bbbbbbbbb
ccccccccc
似乎readline()根本不起作用。 但是,當我禁用print a.read()時,readline()恢復工作。
這讓我很困惑。 有什么解決方案可以同時使用read()和readline()嗎?
打開文件時,您將獲得一個指向文件某個位置的指針(默認情況下:開頭)。 現在,無論何時運行.read()
或.readline()
此指針都會移動:
.read()
讀取直到文件的末尾,並將指針移到末尾(因此進一步調用任何讀取都不會產生任何結果) .readline()
讀取直到看到換行符並在其后設置指針 .read(X)
讀取X個字節並將指針設置為CURRENT_LOCATION + X
(或末尾) 如果願意,可以通過發出a.seek(X)
調用來手動移動該指針,其中X
是文件中的位置(以字節數組表示)。 例如,這應該為您提供所需的輸出:
print a.read()
a.seek(0)
print a.readline()
print a.readline()
print a.readline()
您需要了解文件指針的概念。 當您讀取文件時,它已被完全消耗,並且指針位於文件的末尾。
似乎readline()根本不起作用。
它按預期工作。 沒有要閱讀的行。
當我禁用print a.read()時,readline()恢復工作。
因為指針位於文件的開頭,所以可以讀取行
有什么解決方案可以同時使用read()和readline()嗎?
當然。 翻轉讀取幾行的順序,然后翻轉文件的其余部分,或者將文件指針找回您想要的位置。
另外,讀完文件后不要忘記關閉文件
文件對象a
記住它在文件中的位置。
a.read()
從當前位置讀取到文件的末尾(將位置移動到文件的末尾) a.readline()
從當前位置讀取到行尾(將位置移動到下一行) a.seek(n)
移動到文件中的位置n(不返回任何內容) a.tell()
返回文件中的位置。 因此,請嘗試先將呼叫置於readline。 您會注意到,現在,read調用將不會返回整個文件,僅返回其余的行(也許沒有),這取決於您調用readline的次數。 並與尋求和告訴,以確認發生了什么事。
詳細信息在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.