網站首頁 編程語言 正文
?Python中用于文件目錄操作的常用模塊有os, shutil,pathlib等.
os就是“Operating System”的縮寫,顧名思義,os模塊提供的就是各種 Python 程序與操作系統進行交互的接口。通過使用os模塊,一方面可以方便地與操作系統進行交互,另一方面也可以提高代碼的可移植性,方便代碼跨操作系統平臺使用。如果該模塊中相關功能出錯,會拋出OSError異常或其子類異常。
shutil可以簡單地理解為sh + util,shell工具的意思。shutil模塊是對os模塊的補充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作。
1. os模塊
Python的os模塊封裝了常見的文件和目錄操作。
通常來說,不建議用from os import *來導入os模塊。os模塊中有些函數與python內置函數重名,比如說open()。這種方式導入時,os.open就把python內置open()覆蓋了。
如果是讀寫文件的話,建議使用內置函數open();如果是路徑相關的操作,建議使用os的子模塊os.path;如果要逐行讀取多個文件,建議使用fileinput模塊;要創建臨時文件或路徑,建議使用tempfile模塊;要進行更高級的文件和路徑操作則應當使用shutil模塊。
使用os模塊可以寫出操作系統無關的代碼。但是os也可以調用一些特定系統的擴展功能,但要切記一點:一旦這樣做就會極大損害代碼的可移植性。
1.1 獲取系統信息
判斷使用的平臺:字符串指示你正在使用的平臺。比如對于Windows,它是'nt',而對于Linux/Unix用戶,它是 'posix'。有時候給出的信息不夠細。
# 獲取平臺名稱. 注意這個不是函數,所以不需要帶括號()
os.name
# 獲取系統的核心數
os.cpu_count()
# 改變權限
os.chmod(path, mode)
1.2 ?工作目錄與路徑相關的操作
# 獲取路徑和文件名等
os.getcwd() #函數得到當前工作目錄,即當前Python腳本工作的目錄路徑
os.path.abspath($name) #當前目錄下文件或文件夾的絕對路徑
os.path.basename(path) #返回文件名
os.path.dirname(path) #返回文件的上級路徑
os.path.split() #分離文件名和上級路徑
os.path.join() #合并文件名和指定路徑
os.path.splitext() #分離文件名與擴展名,返回的擴展名包括了'.'符號,默認只返回第一個'.后綴'和前綴。
# 改變工作目錄到dirname
os.chdir(dirname)
# 該函數相當于linux命令“ls”,列舉出指定目錄中的內容。其返回值是一個列表。列表中的每一格元素表示一個子目錄名,或者一個文件名
os.listdir(path)
# 創建一個目錄
os.mkdir(path)
# 刪除一個目錄
os.rmdir(path)
# 重命名
os.rename(src, dst)
# 獲取文件大小信息
os.path.getsize(name) #獲得文件大小,如果name是目錄返回0L
1.3 判斷是否文件或目錄以及指定文件目錄是否存在
#函數分別檢驗給出的路徑是一個文件?
os.path.isfile()
#函數分別檢驗給出的路徑是一個目錄?
os.path.isdir()
#函數用來檢驗給出的路徑是否真地存在
os.path.exists()
1.4 刪除一個文件或者目錄
Ref: How to delete a file or folder in Python? - Stack Overflow
# 刪除一個文件
os.remove()
# 刪除一個文件
os.unlink()
# 刪除一個空目錄,如果不是空目錄會報錯
os.rmdir()
BTW, 除了OS模塊外,shutil和pathlib也提供了相應的函數。?
# 刪除目錄,包括其中的文件以及子目錄,需要小心使用
shutil.rmtree()
# removes a file or symbolic link.
pathlib.Path.unlink()
# removes an empty directory.
pathlib.Path.rmdir()
1.5 串連創建或者分離一個文件目錄路徑
#os.path.join(datadir,file)
#與直接字符串連接不同的是,'D:/tmp'即可,不需要'D:/tmp/'
os.path.join('D:/tmp','tmp.txt')
# 返回路徑的目錄和文件名,即將目錄和文件名分開,而不是一個整體。此處只是把前后兩部分分開而已。就是找最后一個'/'。
os.path.split(path)
1.6 執行外部shell命令
os.system(cmd) #執行外部shell命令。
2. shutil模塊 ? ? ? ?
shutil可以簡單地理解為sh + util,shell工具的意思。shutil模塊是對os模塊的補充,主要針對文件的拷貝、刪除、移動、壓縮和解壓操作。
2.1 拷貝文件
shutil會自動識別拷貝的到底是文件還是文件夾, 如果存在同名的文件將會自動進行覆蓋。
shutil.copy($file_path, $dir_path)
2.2 移動或重命名文件
如果路徑下已有重名的文件,將報錯!
shutil.move($file_path, $dir_path) # 移動到另外一個文件夾中
shutil.move($file_path, $new_file_path) # 重命名為新的絕對路徑
2.3 拷貝文件夾/刪除文件夾
shutil.copytree($file_path, $dir_path) # 拷貝所有文件到新的文件夾下,保持原有的文件結構。
shutil.rmtree($dir_path) # 刪除此路徑的文件夾
2.4 生成壓縮文件
shutil.make_archive(base_name, 'gztar', root_dir, [base_dir)
base_name : 創建的目標文件名,包括路徑,減去任何特定格式的擴展。
format : 壓縮包格式。”zip”, “tar”, “bztar”或”gztar”中的一個。
root_dir : 需要打包的文件夾路徑。打包完成時存儲在上一級目錄。
base_dir : 使用后會將base_dir作為路徑,解壓后有個有層級的文件夾,而僅非只有單獨的打包內容。
2.5 解壓文件
shutil.unpack_archive(filename[, extract_dir[, format]])
filename是壓縮文檔的完整路徑
extract_dir是解壓縮路徑,默認為當前目錄。
format是壓縮格式。默認使用文件后綴名代碼的壓縮格式。”zip”, “tar”, “bztar”或”gztar”中的一個。
原文鏈接:https://blog.csdn.net/chenxy_bwave/article/details/122011306
相關推薦
- 2022-05-11 python?DataFrame數據分組統計groupby()函數的使用_python
- 2024-04-04 mybatis-config.xml的配置
- 2022-05-20 MybatisCodeHelpPro生成持久層代碼
- 2022-06-02 Android?實例代碼帶你掌握FrameLayout_Android
- 2022-09-03 redis?主從哨兵模式實現一主二從_Redis
- 2022-06-25 Docker核心組件之聯合文件系統詳解_docker
- 2022-04-17 aspx頁面報“XPathResult未定義”的解決方法
- 2022-06-08 FreeRTOS實時操作系統Cortex-M內核使用注意事項_操作系統
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支