❤️Python【檔案操作】保姆式教學❤️,計算機那麼多檔案,你繞不過這一關的!

2021-09-22 20:00:01

😏前言

在Python寫程式碼做專案時,我們往往需要對多個檔案進行操作,在現在的原始碼檔案中怎麼匯入其他檔案?怎麼對其他檔案進行操作?這都是經常要面臨的問題,尤其是爬蟲,爬到的資料放在哪裡?用到的時候怎麼調出來?

這就涉及到了Python的檔案操作知識了,我們不可能永遠都只會在一個原始檔上做所有的操作,這也是必須掌握的一個知識板塊。

與此同時,我的Python新手入門教學系列文章也已經快更新完了,歡迎大家的訂閱:

Python新手入門教學系列文章專欄

在這裡插入圖片描述



💼一、檔案的定義和操作

計算機中的檔案通常是指計算機硬碟為載體的、儲存在計算機中的資訊集合,主要的表現形式為視訊、音訊、圖片以及檔案四類,比如執行性檔案.exe、檔案檔案.txt、網頁檔案.html等等。

在這裡插入圖片描述


💼二、檔案的基本操作

在現實中,我們對檔案進行操作可以大致總結為「開啟→操作(閱讀、刪除、修改等)→儲存→關閉」,在Python當中依然是如此,在用Python開始檔案操作之前,我們先學幾個方法。

1.open(name,mode) ----開啟檔案

這是Python開啟檔案的方法,用於開啟一個檔案,返回的是一個檔案物件。

name指的是檔名,一定要寫全,何為寫全?就是要寫清楚 儲存路徑+檔名+字尾 。

為何要寫這麼全?因為就算是相同的儲存路徑下,檔名相同的檔案也可能不止一個,只要字尾不一樣,計算機是允許存在同名檔案,所以不寫全的話,計算機是不知道你指的是誰

mode是開啟檔案的模式,預設是r,也就是唯讀的方式。mode的方式有很多,比如讀、寫等等,後面我們會講到。


2.write(「內容") ------寫

顧名思義,就是向檔案物件中寫入內容。


3.read() -------讀

向檔案中寫入內容,括號裡面可以寫數位也可以不寫,不寫的話預設是讀取全部內容,寫數位則表示讀取X個字元,比如說read(6)則讀取檔案物件的6個字元。


4.close() ------關閉檔案

關閉檔案的方法,如果你在進行檔案操作之後不進行關閉檔案,則檔案一直處於開啟和操作的狀態,會佔用記憶體。


5.案例

在瞭解了這4個基本方法之後,我們來開始做1個小案例:新建一個專案,然後新建一個名為「檔案」的Python檔案用於寫程式碼,然後我們用寫的方式向1個叫「檔案1」的.txt檔案寫入「hello world」,程式碼如下:

f = open("檔案一.txt",'w') #以寫入的方式,開啟檔案
f.write("hello world")  #向檔案一中寫入內容
f.close()   #關閉檔案

前面講過 open() 這個方法返回的是一個檔案物件,所以我們用f進行接收一下,這是沒有執行前的介面:

在這裡插入圖片描述

執行後:

在這裡插入圖片描述

執行後生成了一個新的名為「檔案一.txt」檔案,開啟它之後就能看到我們輸入的內容。進行寫操作時,如果檔案不存在,則預設會建立一個。

同樣的,我們也可以對這個檔案進行讀的操作:

f = open("檔案一.txt",'r') #以寫入的方式,開啟檔案
print(f.read()) #讀檔案
f.close()   #關閉檔案

執行結果:

hello world

這就是一個最基本的檔案操作流程。

在這裡要注意一點,open(name,mode)在一開始寫的時候,mode就已經決定了你能做什麼操作,也就是說如果你在開始寫程式碼的時候寫的是:

f = open("檔案一.txt",'r')	#唯讀的方式開啟檔案

那麼後面你想進行write()的寫操作是會報錯的,因為mode裡面宣告了r唯讀模式,所以你沒有寫的許可權,這一點要注意一下。


6.mode的其他操作模式

mode中有很多的操作模式,我們以表格的方式來看看:

模式描述
r以唯讀的形式開啟檔案,檔案的指標在開頭
r+讀寫,檔案指標在開頭
rb以二進位制的形式,唯讀檔案指標在開頭
w只寫,檔案不存在,則建立新的,存在則覆蓋,指標在開頭
w+讀寫,檔案不存在,則建立新的,存在則覆蓋,指標在開頭
wb只寫,以二進位制的形式
a追加模式,檔案指標在結尾
a+讀寫,不存在則建立,存在直接追加
ab以二進位制形式追加

指標在這裡可以理解為遊標,它在哪裡,你的操作就從哪裡開始。

舉例:新建1個名為 「test」 的.txt檔案,第一次向裡面寫入aaa,第二次向裡面寫入bbb。

f = open("test.txt", 'a+')
f.write("aaa")
f.close()

f = open("test.txt")  # 預設唯讀模式
print(f.read())  # 列印內容

f = open("test.txt", 'a+')
f.write("bbb")
f.close()

f = open("test.txt")  # 預設唯讀模式
print(f.read())  # 再次列印內容

執行結果:

aaa
aaabbb

💼三、檔案的方法與屬性

1.file的物件屬性

有三個常用的方法可用於檢視檔案物件的屬性:

1. closed
   	如果檔案物件已關閉,返回True,否則返回False
2. mode
   	返回檔案物件的存取模式
3. name
   	返回檔案的名稱

案例:對檔案進行操作(隨意),檢視被操作的檔名、操作模式和是否關閉。

f = open("test.txt", 'a+')
f.write("aaa")
f.close()

print(f.closed) #檢視是否關閉
print(f.name)   #檢視檔案名字
print(f.mode)   #檢視操作模式

執行結果:

True
test.txt
a+

2.file的物件方法

檔案的方法有很多,前面我們已經講過一點,比如read()和write(),但還有一些常用的方法需要掌握的,比如下面的:

1. close()
		關閉檔案---非常重要
2. read([count])
		讀取檔案中的內容
		count:位元組數量
3. readlines()
		讀取所有內容,打包成列表
4. readline()
		讀取一行資料,追加讀取,讀取過的不能再次讀取
5. seek(offset,[from])
		修改指標的位置:從from位置移動了offset個位元組
		from:0則表示從起始位置,1則表示從當前位置開始,2則表示從末尾開始
		oofset:要移動的位元組數
6. write()
		向檔案中寫入內容

舉例:向test.txt檔案中寫入aaabbbccc,將檔案中的內容輸出為列表。

f = open("test.txt", 'a+')
f.write("aaabbbccc")
f.close()

f = open("test.txt")
print(f.readlines())
f.close()

執行結果:

['aaabbbcccaaabbbccc']

💼四、os模組

os模組是一個用於存取作業系統的模組,在進行檔案操作的時候常會用到它。模組在使用之前要進行匯入。

import os

1.關於檔案的功能

1.os.rename(原檔名,新的檔名)	——檔案重新命名
2.os.remove(檔名)	——刪除檔案
	如果不說明路徑,則在原始碼所在資料夾下尋找,尋找不到會報錯。
	若想刪除指定資料夾下的檔案,檔名則需要具體路徑,例如 os.remove(r"D:\test_1\檔名"),r防止斜槓發生跳脫

舉例:已有檔案test1.txt,將其修改成test20.txt。

import os
os.rename("test1.txt","test20.txt")

執行結果:

在這裡插入圖片描述


2.資料夾的功能

1.os.mkdir(資料夾名)	——建立資料夾
2.os.rmdir(資料夾名)	——刪除資料夾
3.os.getced()	——獲取當前目錄
4.os.chdir(目錄)	——切換目錄
5.os.listdir(目錄)	——獲取當前資料夾下所有的檔案或者資料夾,返回一個列表
	os.listdir("aa") #獲取aa資料夾下的所有檔案或資料夾,返回一個列表

舉例:在現有資料夾venv裡面新建一個新建資料夾。

import os

os.chdir(r"D:\檔案\venv")  #切換到venv資料夾下,r是防止跳脫
os.mkdir("新建資料夾")   #在venv資料夾下建立一個新建資料夾
print(os.getcwd())  #輸出當前目錄位置

執行結果:

在這裡插入圖片描述


🎓結語

關於檔案其實還有很多的方法,用到的時候可以去網上查查資料去深入瞭解,比如說os模組裡面還有其他的方法,我們可以ctrl+滑鼠左鍵進入模組內部檢視,比如說不止os模組,還有os.path這個模組也是比較常用的檔案操作模組。

那麼今天的分享就先到這裡,看完可以收藏起來多練練,檔案操作也就不再困難了。

準備了很久,我的公眾號終於是開始運作了,關於我的技術和經驗文章都會優先在上面進行推播,目前還在不斷完善中,歡迎大家的關注。