標籤:
1. 讀取檔案方法: all_the_text = open(‘thefile.txt‘).read()但是為了安全起見還是給開啟的檔案對象指定一個名字,這樣在完成之後可以迅速關掉,防止無用檔案對象佔用記憶體;
例子:file_object = open(‘thefile.txt‘,r)try: all_the_text = file_object.read() #read()將檔案中所以字元都讀到all_the_text中去變成了一個巨大的字串,finally: file_object.close()
不一定要加try,finally語句,但是加了更好,可以保證檔案對象被關閉即使在讀取中發生了嚴重錯誤;
如果要讀入100個字元也可以直接:
text=file.read(100),
如要一行行處理還可以:
ff = file_object.readlines()
#讀出來是 list 類型,而且每行末尾都有‘\n‘符號;既然是一行行的,那麼列印也要一行行的顯示: for line in ff: print line #此時line類型是string,而ff依然是list類型 #這樣列印出來不會亂,而如果直接 print ff 則會一次性列印整個ff序列,而漢子在序列裡面是ASCII,會導致漢子列印不出來,而且特別亂;所以要一行行的列印’ 而最簡單方法:
for line in file_object: line = line.rstrip(‘\n‘) print line此時line是string類型,但每行末尾都有‘\n‘符號;可以再for主體部分加一句:line = line.rstrip(‘\n‘) 在每行末尾去掉‘\n‘符號,而line.restrip()則預設去掉空白符;
2. 寫入檔案最方便的一個方法:
open(‘thefile.txt‘,‘w‘).write(all_the_text)
但是最好還是給檔案對象指定一個名字,這樣方便關閉檔案對象
file_object = open(‘thefile.txt‘,‘w‘)file_object.write(all_the_text)file_object.close()
實際上用‘w’或者‘wb‘開啟的檔案,都是空檔案;哪怕是這個檔案不是空檔案,用這兩種方式開啟後,也會被清空;這種情況,就要用到‘a’或者‘ab’來開啟則不會清空;如果用‘a+‘這種方式來開啟的話不能寫的時候檔案不會被清空,而且還可以讀取檔案呢;注意:無論讀還是寫,檔案開啟之後遊標會一直往後走,直到關閉;當然也可以使用seek()函數來控制遊標
3. 搜尋和替換檔案中的文本replace(search_text,replace_text),用於字串的替換;
4. 從檔案中讀取指定的行enumerate():遍曆序列中的元素以及下標
>>> for i,j in enumerate([‘a‘,‘b‘,‘c‘]):... print i,j...0 a1 b2 c
函數模組:
def getline(thefilepath,desired_line_number): if desired_line_number < 1: return ‘ ‘ for current_line_number,line in enumerate(open(thefilepath,‘ru‘)): if current_line_number == desired_line_number-1: return line return ‘‘
庫檔案 linecache當對檔案進行多次讀取時,linecache,特別有用,它讀取並緩衝指定檔案裡的所有文本;用clearcache()來釋放被用作緩衝的記憶體,checkcache()來確保緩衝中的儲存是最新的;
import linecachetheline = linecache.getline(thefilepath,desired_line_number)#簡單一句就可以得到檔案指定行的文本了,方便吧;
5. 處理檔案中的每一個單詞首先看一個函數split()Python split()通過指定分隔字元對字串進行切片,如果參數num 有指定值,則僅分隔 num 個子字串執行個體:
#!/usr/bin/pythonstr = "Line1-abcdef \nLine2-abc \nLine4-abcd";print str.split( );print str.split(‘ ‘, 1 );以上執行個體輸出結果如下:[‘Line1-abcdef‘, ‘Line2-abc‘, ‘Line4-abcd‘][‘Line1-abcdef‘, ‘\nLine2-abc \nLine4-abcd‘]
對每一個詞做一些處理,最好的就是兩重迴圈,一個用於處理行,一個用於處理單詞
for line in open(thefilepath): for word in line.split(): dosometingwith(word)
6. 處理zip資料6.1 從zip檔案中讀取資料任務檢查一個zip文檔中所有子項,並列印子項名稱,以及大小;
#!/usr/bin/env python#encoding:utf-8import zipfile#以’r‘開啟zip檔案,z = zipfile.ZipFile("text.txt.zip","r")#從zip檔案清單中讀取子項名並讀取出來計算其位元組數for filename in z.namelist(): print ‘File:‘,filename byte = z.read(filename) print ‘has‘,len(byte),‘byte‘
python--檔案處理1