2012-07-27 30 views
86

請原諒我這裏的困惑,但我已經閱讀了關於python中seek()函數的文檔(在使用它之後),雖然它幫助了我,但我仍然對它的實際含義有些困惑,任何解釋非常感謝,謝謝。seek()函數?

+4

你可以考慮用更好的解釋和更多的業力 – 2016-05-18 16:11:20

回答

149

關於seek()有沒有太多擔心。

首先,它在通過打開的文件進行操作時很有用。

需要注意的是它的語法如下是很重要的:

fp.seek(offset, from_what) 

其中fp是你正在使用的文件指針; offset表示您將移動多少個職位; from_what定義了你的參考點:

  • :意味着你的參考點爲開頭的文件
  • 的的:意味着你的參考點是當前文件位置
  • :意味着你的參考點是該文件的

如果省略,from_what默認爲0

永遠不要忘記,管理文件的時候,總會有這個文件,你目前正在內的位置。剛剛打開時,該位置是該文件的開始,但當您使用它時,您可能會前進。當你需要walk沿着打開的文件,就像你旅行到一個路徑
seek將是對你有用。

+69

+1用於解釋第二個參數,但我想補充一點,您應該使用常量'os.SEEK_SET','os.SEEK_CUR'和'os.SEEK_END'來代替魔術數字'0', '1'和'2'。 – ArtOfWarfare 2014-11-11 17:16:58

33

打開文件時,系統指向文件的開頭。任何你讀或寫的事情都會從一開始就發生。 seek()操作將該指針移動到文件的其他部分,以便您可以在該位置讀取或寫入。

所以,如果你想閱讀整個文件,而是跳過前20個字節,打開該文件,尋求(20)移動到要開始閱讀,然後繼續閱讀文件。

或者說你想讀每10個字節,你可以寫一個循環,並尋求(9,1)(移9個字節着相對於當前位置),讀取一個字節,重複。

+12

-1接受了答案:這個答案不能解釋的第二個參數,實際上,作爲措辭,使得它聽起來就像是第二個參數決定了多少字節是如何讀。 – ArtOfWarfare 2014-11-11 17:15:20