您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python中os模塊和shutil模塊的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Python是一種編程語言,內置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數據分析,人工智能,Web開發等。
os
模塊和shutil
模塊是Python處理文件/目錄的主要方式。os模塊提供了一種使用操作系統相關功能的便捷方式,shutil模塊是一種高級的文件/目錄操作工具。
文件的處理
os
模塊提供了一些便捷功能來使用操作系統資源,比如讀取資源目錄下的文件、在命令行查看某路徑下文件的所有內容等。
獲取系統類型
對代碼進行兼容性開發以適應不同操作系統時通過操作系統類型進行判斷就可以輕松解決。
import osimport sysprint(os.name) # 返回nt代表Windows,posix代表Linuxprint(sys.platform) # 更詳細信息
獲取系統環境
對環境變量進行相關設置時,常常會調用模塊environ
模塊。os.environ
是以字典的形式返回系統環境變量,要獲取具體的屬性值,可以用索引,也可以用方法getenv()
:
import osprint(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(path2,path3) | 將路徑組合 | |
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 shutilimport os shutil.unpack_archive('D:\PycharmProjects\Hello\shutil-test.zip','D:\\testdir')print(os.listdir('D:\\testdir'))
小結
需要注意的是不同的操作系統中,路徑分隔符不一樣,在文件處理時需要考慮。也可以使用os.sep()
來替代文件分隔符,因為操作系統而造成的程序異常。此外處理文件時往往需要注意文件權限,還有注意文件和文件夾的區別,使用遞歸等。
關于“Python中os模塊和shutil模塊的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。