linecache模組 隨機讀取檔案指定行

2022-07-08 19:06:10 字數 1221 閱讀 3370

除了可以借助 fileinput 模組實現讀取檔案外,python 還提供了 linecache 模組。和前者不同,linecache 模組擅長讀取指定檔案中的指定行。換句話說,如果我們想讀取某個檔案中指定行包含的資料,就可以使用 linecache 模組。

值得一提的是,linecache 模組常用來讀取 python 原始檔中的**,它使用的是 utf-8 編碼格式來讀取檔案內容。這意味著,使用該模組讀取的檔案,其編碼格式也必須為 utf-8,否則要麼讀取出來的資料是亂碼,要麼直接讀取失敗(python 直譯器會報 syntaxerror 異常)。

要使用 linecache 模組,就必須知道其包含了哪些函式。linecache 模組中常用的函式及其功能如表 1 所示。

表 1 linecache模組常用函式及功能

函式基本格式

功能linecache.getline(filename, lineno, module_globals=none)

讀取指定模組中指定檔案的指定行(僅讀取指定檔案時,無需指定模組)。其中,filename 引數用來指定檔名,lineno 用來指定行號,module_globals 引數用來指定要讀取的具體模組名。注意,當指定檔案以相對路徑的方式傳給 filename 引數時,該函式以按照 sys.path 規定的路徑查詢該檔案。

linecache.clearcache()

如果程式某處,不再需要之前使用 getline() 函式讀取的資料,則可以使用該函式清空快取。

linecache.checkcache(filename=none)

檢查快取的有效性,即如果使用 getline() 函式讀取的資料,其實在本地已經被修改,而我們需要的是新的資料,此時就可以使用該函式檢查快取的是否為新的資料。注意,如果省略檔名,該函式將檢車所有快取資料的有效性。

舉個例子:

import linecache

import string

#讀取string模組中第 3 行的資料

print(linecache.getline(string.__file__, 3))

# 讀取普通檔案的第2行

print(linecache.getline('my_file.txt', 2))

在執行該程式之前,需保證 my_file.txt 檔案是以 utf-8 編碼格式儲存的(python 提供的模組,通常編碼格式為 utf-8)。在此基礎上,執行該程式,其輸出結果為:

public module variables:

常用模組linecache學習

linecache 模組允許從 python 原始檔中隨機讀取指定行,並在內部使用快取優化儲存。由於該模組主要被設計成讀取 python 原始檔,因此它會用 utf 8 字符集來讀取文字檔案。實際上,使用 linecache 模組也可以讀取其他檔案,只要該檔案使用了 utf 8 字符集儲存。line...

讀取檔案指定行linecache

import linecache poem programming is fun when the work is done if you wanna make your work also fun use python f file poem.txt w f.write poem f.close ...

python模組 隨機模組

1 import random23 print random.random 隨機產生乙個 0,1 的 float 0.02624429936160077645 print random.randint 1,4 1,4 隨機整數 367 print random.randrange 1,3 1,3 隨...