文章目錄
- 檔案的處理
- 獲取系統型別
- 獲取系統環境
- 執行系統命令
- 操作目錄與檔案
- 檔案和目錄高級處理
- 復制檔案
- 移動檔案
- 讀取壓縮及歸檔壓縮檔案
- 解壓檔案
- 小結
os模塊和
shutil模塊是Python處理檔案/目錄的主要方式,os模塊提供了一種使用作業系統相關功能的便捷方式,shutil模塊是一種高級的檔案/目錄操作工具,
檔案的處理
os模塊提供了一些便捷功能來使用作業系統資源,比如讀取資源目錄下的檔案、在命令列查看某路徑下檔案的所有內容等,
獲取系統型別
對代碼進行兼容性開發以適應不同作業系統時通過作業系統型別進行判斷就可以輕松解決,
import os
import sys
print(os.name) # 回傳nt代表Windows,posix代表Linux
print(sys.platform) # 更詳細資訊

獲取系統環境
對環境變數進行相關設定時,常常會呼叫模塊environ模塊,os.environ是以字典的形式回傳系統環境變數,要獲取具體的屬性值,可以用索引,也可以用方法getenv():
import os
print(os.environ)
print(os.environ['PATH'])
print(os.getenv('PATH'))

執行系統命令
使用os模塊system()方法可以執行shell命令,正常執行會回傳0,使用格式是os.system("bash command"),
在非控制臺撰寫時,system()只會呼叫系統命令而不會執行,執行結果可通過popen()函式回傳file物件進行讀取獲得,
import os
os.system('ping www.baidu.com')
os.popen('ping www.baidu.com').read()

操作目錄與檔案
使用os模塊操作目錄和檔案時Python開發最為常見的功能之一,
| 方法 | 說明 | 示例 |
| os.getcwd() | 獲取當前目錄路徑 | ![]() |
| os.chdir('目標路徑') | 更改當前腳本目錄 | ![]() |
| os.listdir(path) | 列舉目錄下所有檔案 | ![]() |
| os.mkdir(path) | 創建單個目錄 | ![]() |
| os.makedirs(path) | 創建多級目錄 | |
| os.rmdir(path) | 洗掉單級空目錄 | |
| os.removedirs(path) | 洗掉多級目錄 | |
| os.rename("檔案或目錄名",”目標名“) | 重命名目錄或檔案 | ![]() |
| os.path.abspath() | 獲取絕對路徑 | ![]() |
| os.path.split(path) | 將路徑分解為(檔案夾,檔案名) 若路徑字串最后一個字符是\,則只有檔案夾部分有值; 若路徑字串中均無\,則只有檔案名部分有值; 若路徑字串有\且不再最后,則檔案夾檔案名都有值, | ![]() |
| os.path.join(path1,path2) | 將路徑組合 | |
| os.path.dirname(path) | 獲取path中的檔案夾部分 | ![]() |
| os.path.basename(path) | 獲取path中的檔案名 | |
| os.path.exists(path) | 判斷檔案或檔案夾是否存在 | ![]() |
| os.path.isfile(path) | 判斷路徑是否是一個檔案 | ![]() |
| os.path.isdir(path) | 判斷路徑是否為一個目錄 | ![]() |
| os.path.getsize(path) | 獲取檔案或檔案夾大小 | ![]() |
| os.path.getctime(path) | 獲取檔案或檔案夾創建時間 | ![]() |
| os.path.getatime(path) | 獲取檔案或檔案夾最后訪問時間 | ![]() |
| os.path.getmtime(path) | 獲取檔案或檔案夾最后修改時間 | ![]() |
| os.sep() | 路徑分割符 | ![]() |
| os.extsep() | 檔案名和后綴之間的分割符 | |
| os.pathsep() | 路徑分隔符 | |
| os.linesep() | 換行符號 |
(
插播反爬資訊)博主CSDN地址:https://wzlodq.blog.csdn.net/
檔案和目錄高級處理
相比
os模塊,shutil模塊用于檔案和目錄的高級處理,提供了支持檔案賦值、移動、洗掉、壓縮和解壓等功能,
復制檔案
shutil模塊的主要作用是賦值檔案,大概有以下七種實作:
-
shutil.copyfileobj(file1,file2)覆寫復制
將file1的內容覆寫file2,file1、file2表示打開的檔案物件, -
shutil.copyfile(file1,file2)覆寫復制
也是覆寫,但是無須打開檔案,直接用檔案名進行覆寫(其原始碼還是呼叫的copyfileobj), -
shutil.copymode(file1,file2)權限復制
僅復制檔案權限,不更改檔案內容、組和用戶,無回傳物件, -
shutil.copystart(file1,file2)狀態復制
復制檔案的所有狀態資訊,包括權限、組、用戶和時間等,無回傳物件, -
shutil.copy(file1,file2)內容和權限復制
復制檔案的內容和權限,相當于先執行了copyfile再執行了copysmode, -
shutil.copy2(file1,file2)內容和權限復制
復制檔案的內容及所有狀態資訊,相當于先執行了copyfile再執行了copystart, -
shutil.copytree()遞回復制
遞回地復制檔案內容及狀態資訊
移動檔案
使用函式shutil.move()函式可以遞回地移動檔案或重命名,并回傳目標,若目標是現有目錄則src再當前目錄移動;若目標已經存在且不是目錄,則可能會被覆寫,


讀取壓縮及歸檔壓縮檔案
使用函式shutil.make_archive()創建歸檔檔案,并回傳歸檔后的名稱,
語法如下:
shutil.make_archive(base_name,format[,root_dir[,base_dir[,verbose[,dry_run[,owner[,group[,logger]]]]]]])
- base_name為需要創建的檔案名,包括路徑
- format表示壓縮格式,可選zip、tar或bztar等
- root_dir為歸檔的目錄
import shutil
path_1 = r'D:\PycharmProjects\Hello'
path_2 = r'D:\PycharmProjects\Hello\shutil-test'
new_path = shutil.make_archive(path_2,'zip',path_1)
print(new_path)

解壓檔案
使用函式shutil.unpack_archive(filename[,extract_dir[,format]])分析拆檔,
- filename是歸檔的完整路徑
- extract_dir是解壓歸檔的目標目錄名稱
- format是解壓檔案的格式
import shutil
import os
shutil.unpack_archive('D:\PycharmProjects\Hello\shutil-test.zip','D:\\testdir')
print(os.listdir('D:\\testdir'))

小結
需要注意的是不同的作業系統中,路徑分隔符不一樣,在檔案處理時需要考慮,也可以使用os.sep()來替代檔案分隔符,因為作業系統而造成的程式例外,此外處理檔案時往往需要注意檔案權限,還有注意檔案和檔案夾的區別,使用遞回等,
Python系列博客持續更新中
原創不易,請勿轉載(
本不富裕的訪問量雪上加霜)
博主首頁:https://wzlodq.blog.csdn.net/
微信公眾號:唔仄lo咚鏘
如果文章對你有幫助,記得一鍵三連?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/265401.html
標籤:python
上一篇:“梧桐杯”中國移動大資料應用創新大賽 - 智慧城市賽道baseline
下一篇:實作楊輝三角的幾種方法
















