概述
Python 文件 seek() 方法用於移動文件讀取指針到指定位置。
語法
seek() 方法語法如下:
fileObject.seek(offset[,whence])
參數
offset -- 偏移量,也就是代表需要移動偏移的字節數,注意是按照字節算的,字符編碼存每個字符所占的字節長度不一樣。
如“路飛學城” 用gbk存是2個字節一個字,用utf-8就是3個字節,因此以gbk打開時,seek(4) 就把光標切換到了“飛”和“學”兩個字中間。
但如果是utf8,seek(4)會導致,拿到了飛這個字的一部分字節,打印的話會報錯,因為處理剩下的文本時發現用utf8處理不了了,因為編碼對不上了。少了一個字節。
whence:可選,默認值為 0。表示要從哪個位置開始偏移;0代表從文件開頭開始算起,1代表從當前位置開始算起,2代表從文件末尾算起。
返回值
該函數沒有返回值。
實例
以下實例演示了 seek() 方法的使用:
文件 runoob.txt 的內容如下:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.com
循環讀取文件的內容:
#!/usr/bin/python3
# 打開文件
fo = open("runoob.txt", "r+",encoding="utf-8")
print ("文件名為: ", fo.name)
line = fo.readline()
print ("讀取的數據為: %s" % (line))
# 重新設置文件讀取指針到開頭
fo.seek(0,0)
line = fo.readline()
print ("讀取的數據為: %s" % (line))
# 關閉文件
fo.close()
以上實例輸出結果為:
文件名為: runoob.txt
讀取的數據為: 1:www.runoob.com
讀取的數據為: 1:www.runoob.com