首頁 > 軟體

python檔案操作的基礎詳細講解(write、read、readlines、readline)

2022-04-12 13:00:55

前言

python 檔案操作、檔案讀寫(write、read、readlines、readline)、檔案的相關操作,簡單易懂

1 檔案操作

檔案就是把一些資料存起來,可以讓程式下一次執行的時候直接使用,而不必重新制作一份,省時省力。

1.1 檔案開啟與關閉

1.1.1 開啟檔案

在python中,使用open函數,可以開啟已經存在的檔案,或者建立一個新檔案,open(檔名,存取模式)

範例如下:

f = open(‘test.txt','w')

沒有找到‘test.txt’檔案,所以新建了‘test.txt’檔案

1.1.2 關閉檔案

close()

範例如下:

#新建一個檔案,檔名為:test.txt
f = open(「text.txt」,」w」)
f.colse()#關閉這個檔案

1.2 存取模式及說明

存取模式說明
r以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。
w開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
rb以二進位制格式開啟一個檔案用於唯讀。檔案指標將會放在檔案的開頭。這是預設模式。
wb以二進位制格式開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
ab以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。
r+開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。
w+開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。
a+開啟一個檔案用於讀寫,如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果改檔案不存在,建立新檔案用於讀寫。
rb+以二進位制格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭
wb+以二進位制格式開啟一個檔案用於讀寫。如果改檔案已存在則會覆蓋。如果改檔案不存在,建立新檔案。
ab+以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果改檔案不存在,建立新檔案用於讀寫。

2 檔案讀寫

2.1 寫資料(write)

使用write()可以完後向檔案寫入資料

範例如下:

#寫
f = open("test.txt","w") #開啟檔案,w模式(寫模式),檔案不存在就新建
f.write("hello world,I am here!")   #將字串寫入檔案中
f.close()   #關閉檔案

寫入的內容

2.2 讀資料(read)

使用read(num)可以從檔案中讀取資料,num表示要從檔案中讀取的資料的長度(單位是位元組),如果沒有傳入num,那麼就表示讀取檔案中的所有資料

範例如下:

#讀:read方法,讀取指定的字元,開始時定位在檔案頭部,每執行一次向後移動指定字元數
f = open("test.txt","r")
content = f.read(5) #一次讀五個字元
print(content)
print('-'*30)
content = f.read()
print(content)
f.close()

執行結果下圖:

2.3 讀資料(readlines)

就像read沒有引數時一樣,readlines可以按照行的方式把整個檔案中的內容進行一次性的讀取,並且返回的是一個列表,其中每一行的資料為一個元素

範例如下:

f = open("test.txt","r")
content = f.readlines() # 一次性讀取全部檔案為列表,每行一個字串
print(content) #['hello world,I am here!n', 'hello world,I am here!n', 'hello world,I am here!n', 'hello world,I am here!n',

i = 1
for temp in content:
    print("%d:%s"%(i,temp))
    i += 1
f.close()

執行結果下圖:

2.3 讀資料(readline)

readline一次讀取一行

範例如下:

f = open("test.txt","r")
content = f.readline() #1:hello world,I am here!--1
print("1:%s"%content)

content = f.readline() #2:hello world,I am here!--2
print("2:%s"%content)
f.close()

執行結果下圖:

3 檔案的相關操作

有些時候,需要對檔案進行重新命名、刪除一些操作,python的os模組中都有這些功能

3.1 檔案重新命名

os模組中的rename()可以完成對檔案的重新命名操作rename(需要修改的檔名,新的檔名)

import os
os.rename(「畢業論文.txt」,」畢業論文-最終版.txt」)

3.2 刪除檔案

os中的remove()可以完成對檔案的刪除操作

remove(待刪除的檔名)

import os 
os.remove(「畢業論文.txt」)

3.3 建立資料夾

import os
os.mkdir(「張三」)

3.4 獲取當前目錄

import os
os.getcwd()

3.5 改變預設目錄

import os
os.chdir(「../」)

補充:檔案綜合操作範例

將資料夾下所有圖片名稱加上'_fc'

python程式碼:

# -*- coding:utf-8 -*-
import re
import os
import time
#str.split(string)分割字串
#'連線符'.join(list) 將列表組成字串
def change_name(path):
    global i
    if not os.path.isdir(path) and not os.path.isfile(path):
        return False
    if os.path.isfile(path):
        file_path = os.path.split(path) #分割出目錄與檔案
        lists = file_path[1].split('.') #分割出檔案與副檔名
        file_ext = lists[-1] #取出字尾名(列表切片操作)
        img_ext = ['bmp','jpeg','gif','psd','png','jpg']
        if file_ext in img_ext:
            os.rename(path,file_path[0]+'/'+lists[0]+'_fc.'+file_ext)
            i+=1 #注意這裡的i是一個陷阱
        #或者
        #img_ext = 'bmp|jpeg|gif|psd|png|jpg'
        #if file_ext in img_ext:
        #    print('ok---'+file_ext)
    elif os.path.isdir(path):
        for x in os.listdir(path):
            change_name(os.path.join(path,x)) #os.path.join()在路徑處理上很有用

img_dir = 'D:\xx\xx\images'
img_dir = img_dir.replace('\','/')
start = time.time()
i = 0
change_name(img_dir)
c = time.time() - start
print('程式執行耗時:%0.2f'%(c))
print('總共處理了 %s 張圖片'%(i))

總結

到此這篇關於python檔案操作基礎的文章就介紹到這了,更多相關python檔案操作內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com