Python低內耗讀取檔案的二分查詢單詞

2021-09-01 17:20:27 字數 648 閱讀 1093

問題描述:有乙個有序的單詞檔案如下圖

要求寫乙個查詢功能(防止檔案過大時占用記憶體,建議檔案不要一次全部讀入記憶體)

使用二分查詢法,輸出匹配的結果

例如   輸入》   dis

輸出》   disadvantage         n. 不利,不利條件,損害,損失

discussion         n. 討論; v. 討論,商議

環境工具:centos6.3  python2.6

解決過程:1. 首先要考慮不能一次將檔案全部讀入記憶體,而且單詞的內容是一行行的,那麼就考慮如何在不讀入全部檔案到記憶體的情況下,直接讀檔案的第幾行

python 的檔案操作裡面有

seek函式動態定義檔案指標的位置(從**開始讀)

tell函式報告檔案指標的位置(受seek、readline、read、readlines影響)

在乙個單詞檔案比較規範的情況下,用seek、tell配合readline就可以直接讀取檔案的特定一行到記憶體

**片段如下

2. 關於二分查詢法,就是在有序序列中,不斷的取中間元素做比較,進行查詢,能較大提高效率,涉及到python的字串匹配(in關鍵字)和字串比較(cmp函式)

**片段如下

3. 如入dis查詢結果如下圖,原始碼見findword.py

python高階讀取檔案 Python讀取檔案內容

開啟檔案之後,就可以讀取檔案的內容,檔案物件提供多種讀取檔案內容的方法。開啟test.txt檔案 f open test.txt r 開啟test.txt檔案 f.close 關閉檔案 test.txt檔案有以下內容 hello world.hello python.hello imooc.讀取若干...

Python檔案讀取

python提供了多種方法實現檔案讀取操作 1 read 2 readline 3 readlines 4 xreadlines 很多人也在糾結到底應該選擇哪種方式,甚至疑問在處理大檔案時應該選擇哪種方式,因為擔心檔案過大導致記憶體佔用率過高甚至無法完全載入。其實,這個問題是多餘的,在引入了迭代器和...

python檔案讀取

1.讀取txt檔案 read 讀取整行檔案 readline 讀取一行資料 readines 讀取所有行的資料 讀取txt檔案 user file open user info.txt r lines user file.readlines forline inlines username line...