一、seek方法簡介
seek()
是 Python 中用於移動文件讀取指針到指定位置的函數,它的基本語法為:
file.seek(offset[, whence])
其中 offset 參數代表偏移量(相對於 whence 參數所指的位置),whence 參數則是可選參數,用於設置偏移量的基準位置,其可選值有:
- 0: 從文件開始位置計算,即從起始位置偏移;
- 1: 從當前指針位置開始計算;
- 2: 從文件末尾開始計算。
二、應用案例:按行讀取文件
在 Python中讀取文件時,一般使用 readline()
函數按行讀取,但是這種讀取方式效率較低,在讀取大文件時需要耗費大量時間。
以下代碼是按行讀取文件的傳統方式:
f = open('file.txt', 'r')
while True:
line = f.readline()
if not line:
break
print(line, end='')
f.close()
使用 seek()
函數可以高效地按行讀取文件,代碼如下:
f = open('file.txt', 'r')
while True:
pos = f.tell()
line = f.readline()
if not line:
break
print(line, end='')
next_pos = f.tell()
f.seek(pos + len(line) - next_pos, 1)
f.close()
在上述代碼中,每次讀取一行後使用 tell()
函數獲取當前讀取指針的位置,再使用 simple math 獲取下一行開始的位置,接着重新定位讀取指針即可。
三、應用案例:跳過若干行再開始讀取
在讀取文件時,有時候需要先跳過幾行內容再開始讀取,以下代碼演示了如何使用 seek()
函數實現跳過 n 行後再開始讀取:
f = open('file.txt', 'r')
n = 10
for i in range(n):
f.readline()
while True:
line = f.readline()
if not line:
break
print(line, end='')
f.close()
改寫為:
f = open('file.txt', 'r')
n = 10
f.seek(n, 1)
while True:
line = f.readline()
if not line:
break
print(line, end='')
f.close()
在上述代碼中,使用 seek()
函數從當前位置向前偏移 n 個字符。
四、應用案例:文件追加
在 Python 中,向文件中添加新的內容非常常見,以下代碼演示了如何使用 seek()
函數在文件末尾進行追加:
f = open('file.txt', 'a+')
f.seek(0, 2)
f.write('append')
f.seek(0)
print(f.read())
f.close()
在上述代碼中,首先使用 a+
模式打開文件,然後使用 seek()
函數將讀取指針移動到文件末尾,緊接着就可以使用 write()
函數向文件中添加新的內容。
五、總結
文件讀取是 Python 開發中經常涉及到的操作之一,使用 seek()
函數可以提高讀取效率、跳過特定行數和實現文件追加功能。掌握了 seek()
函數的使用,可以使文件讀取操作更加高效,減小程序運行時間。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/187504.html