網站首頁 編程語言 正文
在日常工作或生活中,總避免不了需要操作文件或文件夾,比如希望找出電腦中所有臨時文件并清除,或者找到指定文件夾內所有圖片文件并進行重新命名等等,如果能通過Python腳本的方式解決,會大大提升相關操作效率,本文即總結使用Python進行常見操作相關知識點,方便用到的人隨時查閱,不用再每次使用都要花費時間檢索或查閱文檔。本文主要使用os、shutil、pathlib三個包。
一、文件操作
1.1 文件常規操作
操作 | 代碼 | 說明/示例 |
---|---|---|
新建文件 | os.mknod(dir_str) | 傳入需創建文件的路徑,但是需要修改權限才行 |
os.system(' touch test.txt') | 使用命令行創建,簡單方便 | |
移動文件 | shutil.move(src_str,dst_str) | 傳入源路徑和目標路徑,可移動文件及文件夾,移動文件夾時是遞歸移動,返回相較于工作目錄的相對最終路徑 |
復制文件 | shutil.copyfile(src_str,dst_str) | 傳入源文件和需復制到路徑,均需是文件,返回相較于工作目錄的相對最終路徑 |
shutil.copy(src_str,dst_str) | 傳入源文件和需復制到路徑,dst如果是文件則復制+重命名,如果是目錄,則直接復制,但均不復制文件元信息 | |
shutil.copy2(src_str,dst_str) | 相較于copy,會將文件元信息也復制,包括創建、修改時間等 | |
重命名 | os.rename(old_str,new_str) | 對文件或文件夾重命名 |
刪除文件 | os.remove(file_str) | 刪除指定文件,可以傳入相較于工作目錄的相對路徑 |
1.2 文件讀寫
文件讀寫建議使用Python的標準file操作,具體本文不作展開
with open(filename_str,mode_str) as f:
f.readline()
f.write(content)
1.3 文件相關屬性訪問
操作 | 代碼 | 說明/示例 |
---|---|---|
獲取文件或文件夾屬性 | os.stat(dir_str) |
獲取文件或文件夾相關屬性 可返回文件的模式、所屬用戶ID、大小、上次訪問時間、最后修改時間、創建時間等信息 具體見: Python os.stat() 方法 | 菜鳥教程 |
二、文件夾操作
2.1 文件夾常規操作
操作 | 代碼 | 說明/示例 |
---|---|---|
新建文件夾 | os.mkdir(dir_str) | 創建單個文件夾,如果文件夾已存在會報錯 |
os.mkdirs(dir_str) | 遞歸創建文件夾,即可一次性創建多層文件夾 | |
from pathlib import Path p=Path(dir_str) p.mkdir(exist_ok=True) |
使用pathlib,可以創建單個或遞歸創建文件夾,且如果存在也可忽略報錯 | |
移動文件夾 | shutil.move(src_str,dst_str) | 可移動文件或文件夾 |
復制文件夾 | shutil.copytree(src_str,dst_str) | 遞歸的將指定文件夾復制到目標文件夾內,一般用作備份文件夾 |
刪除文件夾 | os.rmdir(dir_str) | 刪除指定文件夾,只能刪除單層文件夾,且不為空 |
os.removedirs(dir_str) | 遞歸刪除指定文件夾,但只會刪除非空文件夾 | |
from pathlib import Path p=Path(dir_str) p.rmdir() |
與os.rmdir作用相同 | |
shutil.rmtree(dir_str) | 遞歸刪除指定文件夾及子文件夾,不為空也行,相對比較危險 |
2.2 遍歷文件夾
操作 | 代碼 | 說明/示例 |
---|---|---|
單層遍歷 | os.listdir(dir_str) | 返回列表,列表內為該文件夾內的所有文件及文件夾名稱 |
os.scandir(dir_str) | 返回對指定文件單層遍歷的迭代器,可遍歷該迭代器,可獲取文件或文件夾名稱、屬性信息 | |
遞歸遍歷 | os.walk(dir_str) | 遞歸遍歷指定文件夾,包括子文件夾 |
import os
dir_str='~/downloads/'
#使用listdir
dir_list=listdir(dir_str)
for file in dir_list:
if os.path.isfile(os.path.join(os.getcwd(),file):
print('是一個文件')
#使用scandir
for file in os.scandir(dir_str):
print(file.name) #打印文件名稱
print(file.stat) #打印文件屬性
#使用os.walk()遞歸遍歷
#walk函數會返回當前遍歷文件夾根目錄,該目錄下所有文件夾組成的列表以及該目錄下所有文件組成的列表
dir_str='~/downloads/'
dir_iter=os.walk(dir_str)
for root_dir,dirs,files in dir_iter:
for file in files:
print(file)
2.3 文件夾相關屬性訪問
見1.3
三、其他相關操作
3.1 工作目錄操作
操作 | 代碼 | 說明/示例 |
---|---|---|
查詢當前工作目錄 | os.getcwd() | 返回當前的工作目錄,即當前執行命令時所在工作目錄 |
修改當前工作目錄 | os.chdir(dir_str) | 修改當前工作目錄,只是臨時修改 |
3.2 文件&文件夾其他操作
操作 | 代碼 | 說明/示例 |
---|---|---|
壓縮文件/文件夾 | shutil.make_archive(file_str,format,src_dir) | 將src_dir按照format指定的格式壓縮為file_str文件 |
解壓壓縮文件 | shutil.unpack_archive(filename, extract_dir=None, format=None) | 將filename解壓到extract_dir |
變更權限 |
os.chmod(dir_str,mode_int) os.chmod('aa.txt',777) |
將dir_str的權限模式修改為mode_int |
import shutil
shutil.make_archive('aaa','zip','/users/aaa/downloads/常用腳本')
#以上會將常用腳本文件夾內所有內容壓縮為aaa.zip,并存到當前工作目錄下
#如果同時希望指定壓縮文件的存儲位置,則
shutil.make_archive('/users/aaa/test/aaa.zip','zip','/users/aaa/downloads/常用腳本')
import shutil
shutil.unpack_archive('aaa.zip','/users/yanweichao/downloads/bbb')
#或想當前文件內的aaa.zip文件解壓到bbb文件夾內,如果bbb文件夾不存在,會自動創建
原文鏈接:https://blog.csdn.net/yifengchaoran/article/details/123591190
相關推薦
- 2022-05-27 C語言實現數獨小游戲_C 語言
- 2022-05-08 Python?matplotlib實現折線圖的繪制_python
- 2022-12-03 Sql?Server中通過sql命令獲取cpu占用及產生鎖的sql_MsSql
- 2023-06-17 關于生產消費者模型中task_done()的具體作用_python
- 2022-02-02 使用layui框架時,select的onchange事件沒有生效。
- 2022-06-08 Element-UI中selet下拉框無法回顯問題
- 2022-07-08 Python基礎篇之字符串的最全常用操作方法匯總_python
- 2022-10-16 Python計算標準差之numpy.std和torch.std的區別_python
- 最近更新
-
- 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同步修改后的遠程分支