前言:不知道大家中秋小假過得怎樣?反正我是在寢室睡了3天,其間爬下床看了點python3對檔案操作的相關知識。還是有很多收穫的,總結一下。
番外:在了解python3對檔案的操作之前,先要了解python3.x和python2.x的區別。我主要介紹下編碼的區別。
因為本人純菜鳥,在此之前,也要對編碼有了點基本的了解。
計算機中,目前用的最廣泛,也是最基本的,算是ascii字元編碼了。1.ascii就是我們最常見的,26個英文本母,加上常見的那些字元等等,加起來的,字元編碼;
2.而我們常見的gbk(***)型別字元編碼,就是簡體中文本元編碼;
3.對於台灣等地區,都是用的是正體中文,正體中文一般都是用的是big5,中文一般稱為大五碼,其對應者微軟的cp950;
4.歐洲地區的字元編碼,一般是iso(***);
5.字元編碼發展到最後,要考慮的問題是:最好用,單獨的,某個字元編碼,可以囊括世界上所有的字元,包括以後可能出現的字元此種編碼,就是後來的unicode。
再來說unicode和utf-8,utf-16等的關係,unicode,只是乙個字符集的概念,即表示,設計了一套邏輯,可以用不同的值,表示不同的字元,這個是unicode標準做的事情,即支援了所有的字元;但是,要把unicode,在計算機中實現出來,表示出來,以及把unicode字元,從從乙個地方傳送到別的地方,即字元交換,則涉及到,實際上所採用的字元編碼;把字符集unicode表示出來的字元編碼,有多種,最常見的有,utf-8和utf-16,次常見的還有utf-32。
即:unicode是字符集的概念,utf-8,utf-16是字元編碼的概念;utf-8,utf-16等,只是unicode的實現方式之一。
再來回歸我們的主題,在python2.x中主要有str和unicode兩種字串型別。比如』abc』是str,u』你好』則是unicode。
而到python3中改為了bytes和str,(bytes型別其實就是二進位制資料),所以特別是在對檔案進行操作時,如果設定是二進位制方式開啟,會有b」。
1.開啟檔案:
fp = open(filename,mode)
filename是檔名。
mode是檔案的開啟方式。預設是r+。主要引數有r–唯讀,w–新建寫,a–追加,(+)–可寫,b–二進位制方式。常用的有r+ – 讀寫模式開啟,rb+ – 二進位制讀寫模式,wb+ – 二進位制格式開啟,用於讀寫,若檔案已存在則覆蓋,不存在則新建,a+ – 追加寫。
2.讀取檔案
read(size): 讀取size的位元組數。size為空時,讀取檔案所有位元組。
readlines(size):把讀取到的值放在列表裡儲存並返回列表值。size並不是單純的位元組數,匹配到的是只要是大於某一行起始值的都會讀出整行。
readline(size):若當前行的值大於size,則讀當size值。若小於,則返回
當前行。為空則返回整行。
迭代器:檔案本身可以看做乙個迭代器,迴圈操作。像下面這樣迴圈遍歷就可以全部讀出了。
f = open("foo.txt")
for i in f:
print (i)
在檔案內容比較大時,使用迭代器可以在不消耗大量記憶體的情況下,對檔案進行操作。
3.檔案寫入
1.write(str):將字串寫入檔案,一般情況下寫入可以直接:
write
("lily")
二進位制模式下寫入,需要轉換編碼格式,可以如下寫入:(稍微解釋下decode()和encode(),他們是分別進行解碼和編碼的)
bytes —-decode()—-> str(unicode)—encode()—>bytes
f.write(bytes("lily",'utf-8'))
or f.write("lily".encode())
2.writelines(sequence_of_strings):寫多行到檔案。
4.檔案關閉與緩衝
需要注意的是,下面的**並不能讀出檔案內容。因為檔案寫入後存在一定的緩衝,並沒有寫到系統磁碟裡面,所以不能直接讀取。需要關閉後再開啟讀取。
f = open("foo.txt",'w+')
f.write('111')
# f.close() (如果沒有關閉檔案,是讀取不到的)
# f = open("foo.txt")
fr=f.read()
print (fr)
5.檔案指標
檔案指標的理解也是非常重要的。
f = open("foo.txt",'r+')
fr=f.read()
f.close()
print (fr)
# fr:0123456789abcdef
f = open("foo.txt",'r+')
fr1=f.read(3)
fr2=f.read(3)
print (fr1)
print (fr2)
# fr1:012
# fr2:345
如上**,可以知道foo.txt裡的內容是「0123456789abcdef」,用read()讀出的f1和f2分別是「012」和「345」,可知,用read()讀取之後,檔案指標的位置也相應地後移。
檔案指標的操作方法:
tell():檢視檔案指標當前的位置。
seek(offset[,whence]):可以用來移動檔案指標。
offset偏移量;
whence偏移相對位置,分別有:os.seek_set(相對檔案起始位置,也可用「0」表示);os.seek_cur(相對檔案當前位置,也可用「1」表示);os.seek_end(相對檔案結尾位置,也可用「2」表示)。
還是上面的例子:
fr1=f.read(3)
print(fr1)
#fr1=012 讀取三個位元組
ft2=f.tell()
print (ft2)
#fr2=3 當前指標所指位置是3
fes=f.seek(2,os.seek_set)
ft3=f.tell()
print (ft3)
#fr3=2 相對起始位置偏移了2個位元組,當前指標是2
當然,偏移量也可以為負數,大家可以自己動作做一做。
斷斷續續,終於寫完了。。。。
python 基礎入門 3(對檔案操作)
開啟檔案用open 函式 open filename 預設為讀取模式 等價於open filename,r 1 txt open filename 2print txt.read 3 txt.close 以上三行分別是將檔案開啟,將內容列印出來,將檔案關閉。檔案寫入用 w 1 line1 hello...
python3的檔案操作
python的檔案操作和php的檔案很類似 file物件使用 open 函式來建立,open的引數 r表示讀,w寫資料,在寫之前先清空檔案內容,a開啟並附加內容,開啟檔案之後記得關閉 下表列出了 file 物件常用的函式 序號方法及描述 file.close 關閉檔案。關閉後檔案不能再進行讀寫操作。...
python對檔案操作
python中對檔案 資料夾 檔案操作函式 的操作需要涉及到os模組和shutil模組。得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 返回指定目錄下的所有檔案和目錄名 os.listdir 函式用來刪除乙個檔案 os.remove 刪除多個目錄 os.removedi...