Python3對檔案的操作

2021-07-22 19:16:16 字數 3391 閱讀 9725

前言:不知道大家中秋小假過得怎樣?反正我是在寢室睡了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...