一、基礎內容
在Python中,路徑可以以不同的表現形式進行表示。以下是一些常用的路徑表現形式:
1. 絕對路徑:它是完整的路徑,從根目錄開始直到要操作的文件或文件夾。在Windows系統中,絕對路徑以盤符開始,如`C:\Users\username\Documents\file.txt`;在Unix/Linux系統中,絕對路徑從根目錄`/`開始,如`/home/username/Documents/file.txt`。2. 相對路徑:它是相對于當前工作目錄的路徑。相對路徑不包含根目錄,而是根據當前位置來定位。例如,當前工作目錄是`/home/username/Documents`,要操作的文件在此目錄下,則可以使用相對路徑`file.txt`。3. 轉義字符:在字符串中,路徑中的特殊字符可以使用轉義字符進行表示。例如,反斜杠`\`表示目錄路徑中的分隔符,在Windows中表示為`\`,在Unix/Linux中表示為`/`。4. 原始字符串:在字符串前加`r`作為前綴,可以創建原始字符串,其中的特殊字符不會被轉義。原始字符串特別適用于Windows路徑,因為Windows路徑中包含許多反斜杠。例如,`r"C:\Users\username\Documents\file.txt"`。
在實際使用中,可以根據不同的操作系統和需求選擇適合的路徑表現形式。另外,Python提供了os.path
模塊,其中包含了一些函數和方法用于處理路徑,例如os.path.join()
用于連接路徑組件、os.path.abspath()
用于獲取絕對路徑等。這些函數和方法可以幫助我們更方便地處理路徑。
1.1 路徑拼接
在不同的操作系統中,路徑使用的斜杠并不是相同的,但是可以通過os.path.join()
來拼接出正確的路徑,代碼如下:
import os
print(os.path.join('C', 'Program Files', 'Common Files'))# 輸出結果:
# C\Program Files\Common Files
1.2 路徑名與文件名分離
os.path.dirname(path)
:返回path參數中最后一個斜杠之前的內容,即:返回目錄名稱
os.path.basename(path)
:返回path參數中最后一個斜杠之后的內容,即:返回基本名稱
import os
path = r'C:\Windows\System32\666.exe'
print(os.path.dirname(path)) #獲取目錄名稱
print(os.path.basename(path)) #獲取基本名稱# 輸出結果:
# C:\Windows\System32
# 666.exe
os.path.split()
獲取路徑的目錄名稱和基本名稱,返回由兩個字符串組成的元組
import ospath = r'C:\Windows\System32\666.exe'
print(os.path.split(path))# 輸出結果:
# ('C:\\Windows\\System32', '666.exe')
1.3 文件夾創建
使用os.makedirs
創建文件夾,并且會創建出中間所有必要的中間文件夾,來確保完整路徑名存在。使用os.path.exists()
能夠判斷路徑是否存在,存在則返回True
否則False
import osif not os.path.exists(r'D:\Program Files\666\777\888'): #證明不存在此路徑os.makedirs(r'D:\Program Files\666\777\888')
1.4 路徑有效性
在1.3中os.path.exists()
判斷路徑是否存在,除此之外還可以判斷文件或者某個文件夾是否存在。
os.path.exists:如果路徑存在(可以是文件、文件夾),就返回True
os.path.isfile:如果路徑存在,并且是個文件,就返回True
os.path.isdir:如果路徑存在,并且是個文件夾,就返回True
import osprint(os.path.exists(r'C:\Windows')) #檢查路徑是否存在
print(os.path.isfile(r'C:\Windows\System32\666.exe')) #檢查文件是否存在
print(os.path.isdir(r'C:\Windows')) #檢查文件夾是否存在# 輸出結果:
# True
# True
# True
二、文件讀寫
在Python中,文件的讀寫操作通常使用open()
函數來實現。其可操作的文件對象包括(但不限于)以下幾種類型,本節中的案例皆以文本類型txt
為例
1.文本文件(Text Files):這是最常見的文件類型,包含文本內容。使用open()函數以文本模式("r"或"w"等)打開文本文件。2.二進制文件(Binary Files):這些文件包含二進制數據,例如圖片、視頻、音頻等。使用open()函數以二進制模式("rb"或"wb"等)打開二進制文件。3.CSV文件(Comma-Separated Values Files):這些文件以逗號或其他特定字符作為字段分隔符,存儲表格數據。可以使用open()函數以文本模式打開CSV文件,并使用適當的處理方法(例如csv模塊)讀取或寫入CSV文件。4.JSON文件(JavaScript Object Notation Files):這些文件以JSON格式存儲數據,常用于數據交換。可以使用open()函數以文本模式打開JSON文件,并使用適當的處理方法(例如json模塊)讀取或寫入JSON文件。5.XML文件(eXtensible Markup Language Files):這些文件以XML格式存儲數據,常用于數據交換和配置文件。可以使用open()函數以文本模式打開XML文件,并使用適當的處理方法(例如xml.etree.ElementTree模塊)讀取或寫入XML文件。除了上述類型的文件,open()函數還可以操作其他類型的文件,例如配置文件(INI、YAML等)、日志文件(Log files)、數據庫文件等。
2.1 open()函數的基本使用
open()
函數是Python中用于打開文件的內置函數。它的基本使用形式如下:
file = open(file_path, mode)
其中,file_path
是文件的路徑(可以是相對路徑或絕對路徑),mode
是打開文件的模式,默認情況下為r
只讀模式。
2.2 常用的文件打開模式
"r":只讀模式,用于讀取文件內容。
"w":寫入模式,用于寫入文件內容。如果文件已存在,會清空文件內容;如果文件不存在,則會創建新文件。
"a":追加模式,用于向文件末尾追加內容。如果文件不存在,則會創建新文件。
"rb":二進制讀取模式,用于讀取二進制文件。
"wb":二進制寫入模式,用于寫入二進制文件。
"ab":二進制追加模式,用于向二進制文件末尾追加內容。
"rt":文本讀取模式,用于讀取文本文件(默認模式)。
"wt":文本寫入模式,用于寫入文本文件。
"at":文本追加模式,用于向文本文件末尾追加內容。
需要注意的是,在使用open()
函數打開文件后,應該始終在不需要文件時關閉文件,以釋放資源。可以使用close()
方法來關閉文件。
除了使用open()
函數來打開文件,還可以使用with
語句來自動管理文件的打開和關閉,可以避免忘記關閉文件的問題:
file = open("path/to/file.txt", "r")
content = file.read()
file.close()
# 兩種寫法效果一樣,下方寫法不用再手動關閉文件,在with代碼塊結束時會自動關閉文件
with open("path/to/file.txt", "r") as file:content = file.read()print(content)
在with
語句塊中,文件對象在with
塊的范圍內有效,并在with
塊結束時自動關閉文件。這樣可以確保文件在使用完畢后正確關閉。
2.3 常用的文件操作
1.打開文件:使用
open()
函數打開一個文件。可以指定文件的名稱和打開模式(讀取模式、寫入模式等)。file = open("filename.txt", "r") # 以只讀模式打開文件
2.讀取文件內容:使用
read()
、readline()
或readlines()
方法讀取文件的內容。content = file.read() # 讀取整個文件 line = file.readline() # 讀取一行內容 lines = file.readlines() # 讀取所有行的內容并返回一個列表
3.寫入文件:使用
write()
方法向文件中寫入內容。寫入的時候需要注意文件打開的模式是否是二進制讀寫模式,以此來判斷是否需要將寫入的內容進行二進制轉換。file.write("Hello, World!") # 在文件中寫入內容
4.關閉文件:使用
close()
方法關閉文件,釋放資源。file.close() # 關閉文件