python seek_关于python:seek()函数?
請在這里原諒我的困惑,但是我已經閱讀了有關python中seek()函數的文檔(必須使用它之后),盡管它對我有所幫助,但我對它的實際含義還是有些困惑,但任何解釋都很多 謝謝,謝謝。
關于seek(),不必擔心太多。
首先,對打開的文件進行操作時非常有用。
重要的是要注意其語法如下:
1fp.seek(offset, from_what)
其中fp是您正在使用的文件指針; offset表示您將移動多少個位置; from_what定義您的參考點:
0:表示您的參考點是文件的開頭
1:表示參考點是當前文件位置
2:表示您的參考點是文件的結尾
如果省略,from_what默認為0。
永遠不要忘記,在管理文件時,該文件中總會存在您當前正在處理的位置。剛打開時,該位置是文件的開頭,但是當您使用它時,可能會前進。
當您需要沿著打開的文件沿著walk前進時,seek對您很有用,就像您要進入的路徑一樣。
+1用于解釋第二個參數,盡管我想補充一點,您可能應該使用常量os.SEEK_SET,os.SEEK_CUR和os.SEEK_END代替魔術數字0,1和2, 分別。
查找位置是文件內容中的字節索引,類似于數組索引。 同樣有趣的是,如果我們以追加模式a打開文件,則無法搜索以文件開頭的文件。
實際上,在追加模式下,我們可以搜索以fp.seek(0,0)開頭的文件,但是一旦您嘗試寫入該文件,seek將再次重置為文件末尾,內容將在末尾寫入 。
當您打開文件時,系統指向文件的開頭。您所做的任何讀取或寫入都將從一開始就發生。 seek()操作將該指針移動到文件的其他部分,以便您可以在該位置進行讀取或寫入。
因此,如果要讀取整個文件但跳過前20個字節,請打開文件,將seek(20)移至要開始讀取的位置,然后繼續讀取文件。
或者說您想每10個字節讀取一次,您可以編寫一個循環,執行一次seek(9,1)(相對于當前位置向前移動9個字節),讀取一個字節,然后重復。
-1:此答案無法解釋第二個參數,實際上,用措辭來說,聽起來像第二個參數指示要讀取多少個字節。
seek函數期望以字節為單位的偏移量。
Ascii文件示例:
因此,如果您的文本文件包含以下內容:
simple.txt
1abc
您可以跳過1個字節來跳過第一個字符,如下所示:
1
2
3
4fp = open('simple.txt', 'r')
fp.seek(1)
print fp.readline()
>>> bc
二進制文件示例收集寬度:
1
2
3
4fp = open('afile.png', 'rb')
fp.seek(16)
print 'width: {0}'.format(struct.unpack('>i', fp.read(4))[0])
print 'height: ', struct.unpack('>i', fp.read(4))[0]
Note: Once you call read you are changing the position of the
read-head, which act's like seek.
總結
以上是生活随笔為你收集整理的python seek_关于python:seek()函数?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php decrypt,php open
- 下一篇: python的seek用法