檔案使用模式』r』,'w』及』a』分別表示檔案的讀取,寫入和追加;而』r+'表示以讀方式開啟。
如果讀取的檔案中存在中文,則需要輸入如下內容,保證中文讀取正常
import sys
reload(sys)
sys.setdefaultencoding(』utf8』)
檔案的輸入(檔案內容讀取):
read():將檔案中的所有內容看成乙個字串,並將其讀取出來,包括換行符,製表符等,這些字元都算在這乙個字串當中;
readline():以行為單位讀取檔案內容,每次輸入readline()讀取檔案的一行,當所有內容讀取完畢後,再次輸入則為空字串,輸出每行時包括結尾的換行符;
readlines():讀取檔案的所有行,並以每行內容(包括換行符)作為乙個字串,所有行的內容作為乙個列表生成。
例子:read()
>>> f=open('yes.py','r')
>>> f.read()
"#!/usr/bin/env python\nprint 'yes'\n"
readline()
>>> f=open('yes.py','r')
>>> f.readline()
"#!/usr/bin/env python\n"
>>> f.readline()
"print 'yes'\n"
readlines()
>>> f=open('yes.py','r')
>>> f.readlines()
['#!/usr/bin/env python\n'], ["print 'yes'\n"]
檔案的輸出(寫內容到檔案中):
寫入檔案的操作不存在writeline()
write():可寫入字串,但不能寫入列表;
>>> wr=open('name.txt', 'w')
>>> s='234'
>>> wr.write(s)
#寫入字串
>>> wr.close()
>>> wr=open('name.txt', 'w')
>>> ls=['1', '2', '3']
>>> wr.write(ls)
typeerror : expected a string or other character buffer boject
所以write()不能寫入乙個列表
如果列表想寫入檔案,需要利用for迴圈,將列表中的每個元素提取出,之後分別寫入檔案中。例如:
>>> wr=open('name.txt', 'w')
>>> ls=['1', '2', '3']
>>> for a in ls:
... ····wr.write(a)
>>> wr.close()
但寫入name.txt檔案中的形式是123,理想的形式是1,2,3每行寫入乙個字串,所以write()這個函式在寫入檔案內容時,不負責寫入換行符;需要人為加入換行符。
>>> wr=open('name.txt', 'w')
>>> ls=['1', '2', '3']
>>> for a in ls:
... ····wr.write('%s\n'%a)
>>> wr.close()
寫入name.txt的檔案形式是1,2,3每個字串後面有換行符。
writelines():可寫入列表,也可以寫入只含有乙個字元的列表,但不能寫入字串;
>>> wr=open('name.txt', 'w')
>>> ls=['1', '2', '3']
>>> wr.writelines(ls)
>>> wr.close()
寫入name.txt檔案中的形式依然是123,而理想的形式是1,2,3每行寫入乙個字串,所以writelines()在將列表寫入檔案時,是將列表中的元素當成字串,依次寫入的,如果字串當中不存在末尾的換行符』\n』,則寫入檔案的內容不會換行。如果想通過writelines()將列表中的各個元素換行寫入檔案中,可利用for迴圈改變列表元素的形式,再將列表寫入檔案當中。
>>> wr=open('name.txt', 'w')
>>> ls=['1', '2', '3']
>>> ll=
>>> for a in ls:
>>> wr.writelines(ll)
>>> wr.close()
檔案迭代器
next()函式,在不需要迭代器iter()的條件下同樣可以執行迭代器效果;
>>> f=open('yes.py','r')
>>> f.next()
"#!/usr/bin/env python\n"
>>> f.next()
"print 'yes'\n"
>>> f.next()
stopiteration
所以next()函式需要和try函式協調使用
檔案物件方法
file.flush()重新整理檔案的內部緩衝區;
一般在執行file.close()後,才可檢視檔案的寫入內容,但如果輸入file.flush(),可在執行file.close()之前,看到檔案的寫入內容。
file.seek(off, whence=0)#這個檔案指標,僅僅對以'w'
寫檔案的形式有效,對於以'a'
追加檔案的形式是無效的,無法通過seek(0, 0)對方式將檔案指標回到檔案頭部。
在檔案中移動檔案指標,從whence(0代表檔案起始,1代表當前位置,2代表檔案末尾)偏移off個位元組
fileobject.seek(偏移量,選項)
當whence=0時,表示將檔案指標指向從檔案頭部到「偏移量」位元組處;
當whence=1時,表示將檔案指標指向從檔案的當前位置向後移動「偏移量」位元組;
當whence=2時,表示將檔案指標指向從檔案尾部向前移動「偏移量」位元組;
>>> f.seek(0, 0)
#檔案指標回到檔案頭部
>>> f.seek(0, 2)
#檔案指標回到檔案尾部
>>> file.tell()
#顯示檔案指標當前位置
9 檔案輸入與輸出
要想對檔案進行讀取,就需要乙個用file物件構造乙個scanner物件,如下所示 scanner in new scanner paths.get myfile.txt utf 8 如果檔名包含反斜槓符號,就要記住在每個反斜槓之前再加乙個額外的反斜槓 c mydirectory myfile.txt...
Python 09 檔案處理與輸入輸出
有些時候你的程式會與使用者產生互動。舉個例子,你會希望獲取使用者的輸入內容,並向使用者 列印出一些返回的結果。我們可以分別通過 input 函式與print函式來實現這一需求。另乙個常見的輸入輸出型別是處理檔案。建立 讀取與寫入檔案對於很多程式來說是必不可 少的功能,而我們將在本章 這一方面。使用者...
python 16 檔案操作 輸入輸出
檔案操作分為三步 找到檔案 操作關閉按照編碼方式進行檔案的分類 使用方便 占用記憶體小 但是讀取速度慢 不允許跳躍讀取 二進位制檔案 把檔案儲存放在記憶體檔案中進行操作 分類 程式檔案 資料檔案 輸入檔案 輸出檔案文字檔案的操作 又叫ascci檔案 但是預設是編碼uncode編碼 開啟檔案 open...