溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中os模塊和shutil模塊的示例分析

發(fā)布時間:2021-03-03 11:42:46 來源:億速云 閱讀:205 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關Python中os模塊和shutil模塊的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

python可以做什么

Python是一種編程語言,內(nèi)置了許多有效的工具,Python幾乎無所不能,該語言通俗易懂、容易入門、功能強大,在許多領域中都有廣泛的應用,例如最熱門的大數(shù)據(jù)分析,人工智能,Web開發(fā)等。

os模塊和shutil模塊是Python處理文件/目錄的主要方式。os模塊提供了一種使用操作系統(tǒng)相關功能的便捷方式,shutil模塊是一種高級的文件/目錄操作工具。

文件的處理

os模塊提供了一些便捷功能來使用操作系統(tǒng)資源,比如讀取資源目錄下的文件、在命令行查看某路徑下文件的所有內(nèi)容等。

獲取系統(tǒng)類型


對代碼進行兼容性開發(fā)以適應不同操作系統(tǒng)時通過操作系統(tǒng)類型進行判斷就可以輕松解決。

import osimport sysprint(os.name)  # 返回nt代表Windows,posix代表Linuxprint(sys.platform)  # 更詳細信息

Python中os模塊和shutil模塊的示例分析

獲取系統(tǒng)環(huán)境


對環(huán)境變量進行相關設置時,常常會調(diào)用模塊environ模塊。os.environ是以字典的形式返回系統(tǒng)環(huán)境變量,要獲取具體的屬性值,可以用索引,也可以用方法getenv()

import osprint(os.environ)print(os.environ['PATH'])print(os.getenv('PATH'))

Python中os模塊和shutil模塊的示例分析

執(zhí)行系統(tǒng)命令


使用os模塊system()方法可以執(zhí)行shell命令,正常執(zhí)行會返回0。使用格式是os.system("bash command")。

在非控制臺編寫時,system()只會調(diào)用系統(tǒng)命令而不會執(zhí)行,執(zhí)行結(jié)果可通過popen()函數(shù)返回file對象進行讀取獲得。

import os
os.system('ping www.baidu.com')os.popen('ping www.baidu.com').read()

Python中os模塊和shutil模塊的示例分析

操作目錄與文件


使用os模塊操作目錄和文件時Python開發(fā)最為常見的功能之一。

方法說明示例
os.getcwd()獲取當前目錄路徑Python中os模塊和shutil模塊的示例分析
os.chdir('目標路徑')更改當前腳本目錄Python中os模塊和shutil模塊的示例分析
os.listdir(path)列舉目錄下所有文件Python中os模塊和shutil模塊的示例分析
os.mkdir(path)創(chuàng)建單個目錄Python中os模塊和shutil模塊的示例分析
os.makedirs(path)創(chuàng)建多級目錄
os.rmdir(path)刪除單級空目錄
os.removedirs(path)刪除多級目錄
os.rename("文件或目錄名",”目標名“)重命名目錄或文件Python中os模塊和shutil模塊的示例分析
os.path.abspath()獲取絕對路徑Python中os模塊和shutil模塊的示例分析
os.path.split(path)將路徑分解為(文件夾,文件名)
若路徑字符串最后一個字符是\,則只有文件夾部分有值;
若路徑字符串中均無\,則只有文件名部分有值;
若路徑字符串有\(zhòng)且不再最后,則文件夾文件名都有值。
Python中os模塊和shutil模塊的示例分析
os.path.join(path2,path3)將路徑組合
os.path.dirname(path)獲取path中的文件夾部分Python中os模塊和shutil模塊的示例分析
os.path.basename(path)獲取path中的文件名
os.path.exists(path)判斷文件或文件夾是否存在Python中os模塊和shutil模塊的示例分析
os.path.isfile(path)判斷路徑是否是一個文件Python中os模塊和shutil模塊的示例分析
os.path.isdir(path)判斷路徑是否為一個目錄Python中os模塊和shutil模塊的示例分析
os.path.getsize(path)獲取文件或文件夾大小Python中os模塊和shutil模塊的示例分析
os.path.getctime(path)獲取文件或文件夾創(chuàng)建時間Python中os模塊和shutil模塊的示例分析
os.path.getatime(path)獲取文件或文件夾最后訪問時間Python中os模塊和shutil模塊的示例分析
os.path.getmtime(path)獲取文件或文件夾最后修改時間Python中os模塊和shutil模塊的示例分析
os.sep()路徑分割符Python中os模塊和shutil模塊的示例分析
os.extsep()文件名和后綴之間的分割符
os.pathsep()路徑分隔符
os.linesep()換行符號

(插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

文件和目錄高級處理

相比os模塊,shutil模塊用于文件和目錄的高級處理,提供了支持文件賦值、移動、刪除、壓縮和解壓等功能。

復制文件


shutil模塊的主要作用是賦值文件,大概有以下七種實現(xiàn):

  1. shutil.copyfileobj(file1,file2)覆蓋復制
    將file1的內(nèi)容覆蓋file2,file1、file2表示打開的文件對象。

  2. shutil.copyfile(file1,file2)覆蓋復制
    也是覆蓋,但是無須打開文件,直接用文件名進行覆蓋(其源碼還是調(diào)用的copyfileobj)。

  3. shutil.copymode(file1,file2)權限復制
    僅復制文件權限,不更改文件內(nèi)容、組和用戶,無返回對象。

  4. shutil.copystart(file1,file2)狀態(tài)復制
    復制文件的所有狀態(tài)信息,包括權限、組、用戶和時間等,無返回對象。

  5. shutil.copy(file1,file2)內(nèi)容和權限復制
    復制文件的內(nèi)容和權限,相當于先執(zhí)行了copyfile再執(zhí)行了copysmode。

  6. shutil.copy2(file1,file2)內(nèi)容和權限復制
    復制文件的內(nèi)容及所有狀態(tài)信息,相當于先執(zhí)行了copyfile再執(zhí)行了copystart。

  7. shutil.copytree()遞歸復制
    遞歸地復制文件內(nèi)容及狀態(tài)信息

移動文件


使用函數(shù)shutil.move()函數(shù)可以遞歸地移動文件或重命名,并返回目標,若目標是現(xiàn)有目錄則src再當前目錄移動;若目標已經(jīng)存在且不是目錄,則可能會被覆蓋。
Python中os模塊和shutil模塊的示例分析
Python中os模塊和shutil模塊的示例分析

讀取壓縮及歸檔壓縮文件


使用函數(shù)shutil.make_archive()創(chuàng)建歸檔文件,并返回歸檔后的名稱。
語法如下:
shutil.make_archive(base_name,format[,root_dir[,base_dir[,verbose[,dry_run[,owner[,group[,logger]]]]]]])

  • base_name為需要創(chuàng)建的文件名,包括路徑

  • 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)

Python中os模塊和shutil模塊的示例分析

解壓文件


使用函數(shù)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'))

Python中os模塊和shutil模塊的示例分析

小結(jié)


需要注意的是不同的操作系統(tǒng)中,路徑分隔符不一樣,在文件處理時需要考慮。也可以使用os.sep()來替代文件分隔符,因為操作系統(tǒng)而造成的程序異常。此外處理文件時往往需要注意文件權限,還有注意文件和文件夾的區(qū)別,使用遞歸等。

關于“Python中os模塊和shutil模塊的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI