1. 程式人生 > >python 文件讀寫操作

python 文件讀寫操作

som write data AD seq with readline 也會 open


  • open打開文件後一定要記得調用文件對象的close()方法,用try/finally語句來確保最後能關閉文件
    不能把open語句放在try塊裏,因為當打開文件出現異常時,文件對象file_object無法執行close()方法
    file_name = open(‘test.file‘)
    讀取所有內容
    file_object = open(‘thefile.txt‘)
    try:
    all_the_text = file_object.read( )
    finally:
    file_object.close( )
    讀固定字節
    file_object = open(‘abinfile‘, ‘rb‘)
    try:
    while True:
    chunk = file_object.read(100)
    if not chunk:
    break
    do_something_with(chunk)
    finally:
    file_object.close( )
    讀取每行
    list_of_all_the_lines = file_object.readlines( )
    list_of_one_the_line = file_object.readline( )

  • output = open(‘data‘, ‘w‘) wb w+
    file_object.writelines(list_of_text_strings) 寫入多行
    3.清空文件內容
    file = open(‘test.log‘,‘w‘)
    file.truncate() 清空文件內容
  • 文件讀寫使用with..as 方式
    如果文件很小,read()一次性讀取最方便;如果不能確定文件大小,反復調用read(size)比較保險;如果是配置文件,調用readlines()最方便
    f = open(‘/Users/michael/gbk.txt‘, ‘r‘, encoding=‘gbk‘, errors=‘ignore‘) encoding 指定讀取文件的編碼
    linecache,這個模塊也可以解決大文件讀取的問題,並且可以指定讀取哪一行
    面對百萬行的大型數據使用with open 是沒有問題的,但是這裏面參數的不同也會導致不同的效率。經過測試發先參數為"rb"時的效率是"r"的6倍

    linecache 用以實現高效讀取大文件內容或者需要經常訪問的文件,linecache先把文件一次性讀入到緩存中,在以後訪問文件的時候,就不必要再從硬盤讀取
    lines = linecache.getlines(filename) 得到行列表,然後進行遍歷讀取
    line = linecache.getline(filename,linenum) 讀取指定行
    file() 函數用於創建一個 file 對象,它有一個別名叫 open()
    import cPickle as p 利用cPickle模塊進行文件的存儲讀取
    f = file(shoplistfile, ‘w‘) p.dump(shoplist, f) f.close() dump數據到文件
    f = file(shoplistfile) storedlist = p.load(f) print storedlist load 數據從文件
    不能把open語句放在try塊裏,因為當打開文件出現異常時,文件對象file_object無法執行close()方法
    F.read([size]) #size為讀取的長度,以byte為單位
    F.readline([size]) #讀一行,如果定義了size,有可能返回的只是一行的一部分
    F.readlines([size]) #把文件每一行作為一個list的一個成員,並返回這個list。其實它的內部是通過循環調用readline()來實現的。如果提供size參數,size是表示讀取內容的總長,也就是說可能只讀到文件的一部分。
    F.write(str) #把str寫到文件中,write()並不會在str後加上一個換行符
    F.writelines(seq) #把seq的內容全部寫到文件中。這個函數也只是忠實地寫入,不會在每行後面加上任何東西
    用w或a模式打開文件的話,如果文件不存在,那麽就自動創建。用w模式打開一個已經存在的文件時,原有文件的內容會被清空,因為一開始文件的操作的標記是在文件的開頭的,這時候進行寫操作,無疑會把原有的內容給抹掉
    用U模式打開文件,就是支持所有的換行模式
    F.tell() #返回文件操作標記的當前位置,以文件的開頭為原點
    F.seek(offset[,whence]) #將文件打操作標記移到offset的位置。這個offset一般是相對於文件的開頭來計算的,一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以文件末尾為原點進行計算。如果文件以a或a+的模式打開,每次進行寫操作時,文件操作標記會自動返回到文件末尾。

    python 文件讀寫操作