搜尋
首頁後端開發Python教學Python詳解os模組和shutil模組

Python詳解os模組和shutil模組

Mar 03, 2021 am 11:01 AM
os模組python

Python詳解os模組和shutil模組

文章目錄

  • 檔案的處理
    • 取得系統類型
    • 取得系統環境
    • 執行系統指令
    • 操作目錄與檔案
  • #檔案與目錄高階處理
    • #複製檔
    • 移動檔
    • 讀取壓縮及歸檔壓縮檔
    • #解壓縮檔
  • ##小結
(相關免費學習推薦:

python影片教學

#os模組和shutil模組是Python處理文件/目錄的主要方式。 os模組提供了一種使用作業系統相關功能的便捷方式,shutil模組是一種進階的檔案/目錄操作工具。

檔案的處理

os#模組提供了一些便利功能來使用作業系統資源,例如讀取資源目錄下的文件、在命令列查看某路徑下文件的所有內容等。

取得系統類型


對程式碼進行相容性開發以適應不同作業系統時透過作業系統類型進行判斷就可以輕鬆解決。

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

Python詳解os模組和shutil模組

取得系統環境


#對環境變數進行相關設定時,常常會呼叫模組

environ 模組。 os.environ是以字典的形式傳回系統環境變量,要取得具體的屬性值,可以用索引,也可以用方法getenv()

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

Python詳解os模組和shutil模組

執行系統指令


使用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()

Python詳解os模組和shutil模組

操作目錄與檔案


#使用os模組操作目錄和檔案時Python開發最常見的功能之一。

##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模块的主要作用是赋值文件,大概有以下七种实现:

  1. shutil.copyfileobj(file1,file2)覆盖复制
    将file1的内容覆盖file2,file1、file2表示打开的文件对象。

  2. shutil.copyfile(file1,file2)覆盖复制
    也是覆盖,但是无须打开文件,直接用文件名进行覆盖(其源码还是调用的copyfileobj)。

  3. shutil.copymode(file1,file2)权限复制
    仅复制文件权限,不更改文件内容、组和用户,无返回对象。

  4. shutil.copystart(file1,file2)状态复制
    复制文件的所有状态信息,包括权限、组、用户和时间等,无返回对象。

  5. shutil.copy(file1,file2)内容和权限复制
    复制文件的内容和权限,相当于先执行了copyfile再执行了copysmode。

  6. shutil.copy2(file1,file2)内容和权限复制
    复制文件的内容及所有状态信息,相当于先执行了copyfile再执行了copystart。

  7. shutil.copytree()递归复制
    递归地复制文件内容及状态信息

移动文件


使用函数shutil.move()函数可以递归地移动文件或重命名,并返回目标,若目标是现有目录则src再当前目录移动;若目标已经存在且不是目录,则可能会被覆盖。
Python詳解os模組和shutil模組
Python詳解os模組和shutil模組

读取压缩及归档压缩文件


使用函数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)

Python詳解os模組和shutil模組

解压文件


使用函数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模組

小结


需要注意的是不同的操作系统中,路径分隔符不一样,在文件处理时需要考虑。也可以使用os.sep()来替代文件分隔符,因为操作系统而造成的程序异常。此外处理文件时往往需要注意文件权限,还有注意文件和文件夹的区别,使用递归等。

Python系列博客持续更新中

大量免费学习推荐,敬请访问python教程(视频)

方法 說明 範例
#os.getcwd() 取得目前目錄路徑 Python詳解os模組和shutil模組
os.chdir('目標路徑') 更改目前腳本目錄 Python詳解os模組和shutil模組
os.listdir(path) 列出目錄下所有檔案 Python詳解os模組和shutil模組
os.mkdir(path) 建立單一目錄 Python詳解os模組和shutil模組
os.makedirs(path) #建立多層目錄
os.rmdir(path) 刪除單級空目錄
os.removedirs( path) 刪除多層目錄
os.rename("檔案或目錄名稱",」目標名稱「) 重新命名目錄或檔案 Python詳解os模組和shutil模組
os.path.abspath() 取得絕對路徑 Python詳解os模組和shutil模組
若路徑字串最後一個字元是\,則只有文件夾部分有值;
若路徑字串中均無\,則只有檔案名稱部分有值;
若路徑字串有\且不再最後,則資料夾檔案名稱都有值。
Python詳解os模組和shutil模組
Python詳解os模組和shutil模組
Python詳解os模組和shutil模組
Python詳解os模組和shutil模組
Python詳解os模組和shutil模組
取得檔案或資料夾大小 Python詳解os模組和shutil模組
取得檔案或資料夾建立時間 Python詳解os模組和shutil模組
#取得檔案或資料夾最後存取時間 Python詳解os模組和shutil模組
取得檔案或資料夾最後修改時間 Python詳解os模組和shutil模組
路徑分割符 Python詳解os模組和shutil模組
檔案名稱與後綴之間的分割符
路徑分隔符號
#換行符號

以上是Python詳解os模組和shutil模組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
Python與C:學習曲線和易用性Python與C:學習曲線和易用性Apr 19, 2025 am 12:20 AM

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python vs. C:內存管理和控制Python vs. C:內存管理和控制Apr 19, 2025 am 12:17 AM

Python和C 在内存管理和控制方面的差异显著。1.Python使用自动内存管理,基于引用计数和垃圾回收,简化了程序员的工作。2.C 则要求手动管理内存,提供更多控制权但增加了复杂性和出错风险。选择哪种语言应基于项目需求和团队技术栈。

科學計算的Python:詳細的外觀科學計算的Python:詳細的外觀Apr 19, 2025 am 12:15 AM

Python在科學計算中的應用包括數據分析、機器學習、數值模擬和可視化。 1.Numpy提供高效的多維數組和數學函數。 2.SciPy擴展Numpy功能,提供優化和線性代數工具。 3.Pandas用於數據處理和分析。 4.Matplotlib用於生成各種圖表和可視化結果。

Python和C:找到合適的工具Python和C:找到合適的工具Apr 19, 2025 am 12:04 AM

選擇Python還是C 取決於項目需求:1)Python適合快速開發、數據科學和腳本編寫,因其簡潔語法和豐富庫;2)C 適用於需要高性能和底層控制的場景,如係統編程和遊戲開發,因其編譯型和手動內存管理。

數據科學和機器學習的Python數據科學和機器學習的PythonApr 19, 2025 am 12:02 AM

Python在數據科學和機器學習中的應用廣泛,主要依賴於其簡潔性和強大的庫生態系統。 1)Pandas用於數據處理和分析,2)Numpy提供高效的數值計算,3)Scikit-learn用於機器學習模型構建和優化,這些庫讓Python成為數據科學和機器學習的理想工具。

學習Python:2小時的每日學習是否足夠?學習Python:2小時的每日學習是否足夠?Apr 18, 2025 am 12:22 AM

每天學習Python兩個小時是否足夠?這取決於你的目標和學習方法。 1)制定清晰的學習計劃,2)選擇合適的學習資源和方法,3)動手實踐和復習鞏固,可以在這段時間內逐步掌握Python的基本知識和高級功能。

Web開發的Python:關鍵應用程序Web開發的Python:關鍵應用程序Apr 18, 2025 am 12:20 AM

Python在Web開發中的關鍵應用包括使用Django和Flask框架、API開發、數據分析與可視化、機器學習與AI、以及性能優化。 1.Django和Flask框架:Django適合快速開發複雜應用,Flask適用於小型或高度自定義項目。 2.API開發:使用Flask或DjangoRESTFramework構建RESTfulAPI。 3.數據分析與可視化:利用Python處理數據並通過Web界面展示。 4.機器學習與AI:Python用於構建智能Web應用。 5.性能優化:通過異步編程、緩存和代碼優

Python vs.C:探索性能和效率Python vs.C:探索性能和效率Apr 18, 2025 am 12:20 AM

Python在開發效率上優於C ,但C 在執行性能上更高。 1.Python的簡潔語法和豐富庫提高開發效率。 2.C 的編譯型特性和硬件控制提升執行性能。選擇時需根據項目需求權衡開發速度與執行效率。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境