問題描述:有乙個有序的單詞檔案如下圖
要求寫乙個查詢功能(防止檔案過大時占用記憶體,建議檔案不要一次全部讀入記憶體)
使用二分查詢法,輸出匹配的結果
例如 輸入》 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...