Python實現(xiàn)文件及文件夾操作大全
在日常工作或生活中,總避免不了需要操作文件或文件夾,比如希望找出電腦中所有臨時文件并清除,或者找到指定文件夾內(nèi)所有圖片文件并進行重新命名等等,如果能通過Python腳本的方式解決,會大大提升相關操作效率,本文即總結(jié)使用Python進行常見操作相關知識點,方便用到的人隨時查閱,不用再每次使用都要花費時間檢索或查閱文檔。本文主要使用os、shutil、pathlib三個包。
一、文件操作
1.1 文件常規(guī)操作
操作 | 代碼 | 說明/示例 |
---|---|---|
新建文件 | os.mknod(dir_str) | 傳入需創(chuàng)建文件的路徑,但是需要修改權(quán)限才行 |
os.system(' touch test.txt') | 使用命令行創(chuàng)建,簡單方便 | |
移動文件 | 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,會將文件元信息也復制,包括創(chuàng)建、修改時間等 | |
重命名 | 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、大小、上次訪問時間、最后修改時間、創(chuàng)建時間等信息 |
二、文件夾操作
2.1 文件夾常規(guī)操作
操作 | 代碼 | 說明/示例 |
---|---|---|
新建文件夾 | os.mkdir(dir_str) | 創(chuàng)建單個文件夾,如果文件夾已存在會報錯 |
os.mkdirs(dir_str) | 遞歸創(chuàng)建文件夾,即可一次性創(chuàng)建多層文件夾 | |
from pathlib import Path p=Path(dir_str) p.mkdir(exist_ok=True) | 使用pathlib,可以創(chuàng)建單個或遞歸創(chuàng)建文件夾,且如果存在也可忽略報錯 | |
移動文件夾 | shutil.move(src_str,dst_str) | 可移動文件或文件夾 |
復制文件夾 | shutil.copytree(src_str,dst_str) | 遞歸的將指定文件夾復制到目標文件夾內(nèi),一般用作備份文件夾 |
刪除文件夾 | 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) | 返回列表,列表內(nèi)為該文件夾內(nèi)的所有文件及文件夾名稱 |
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函數(shù)會返回當前遍歷文件夾根目錄,該目錄下所有文件夾組成的列表以及該目錄下所有文件組成的列表 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() | 返回當前的工作目錄,即當前執(zhí)行命令時所在工作目錄 |
修改當前工作目錄 | 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 |
變更權(quán)限 | os.chmod(dir_str,mode_int) os.chmod('aa.txt',777) | 將dir_str的權(quán)限模式修改為mode_int |
import shutil shutil.make_archive('aaa','zip','/users/aaa/downloads/常用腳本') #以上會將常用腳本文件夾內(nèi)所有內(nèi)容壓縮為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') #或想當前文件內(nèi)的aaa.zip文件解壓到bbb文件夾內(nèi),如果bbb文件夾不存在,會自動創(chuàng)建
到此這篇關于Python實現(xiàn)文件及文件夾操作大全的文章就介紹到這了,更多相關Python 文件及文件夾操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python-itchat 統(tǒng)計微信群、好友數(shù)量,及原始消息數(shù)據(jù)的實例
今天小編就為大家分享一篇python-itchat 統(tǒng)計微信群、好友數(shù)量,及原始消息數(shù)據(jù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02python如何遍歷指定路徑下所有文件(按按照時間區(qū)間檢索)
這篇文章主要給大家介紹了關于python如何遍歷指定路徑下所有文件(按按照時間區(qū)間檢索)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09Python Pillow.Image 圖像保存和參數(shù)選擇方式
今天小編就為大家分享一篇Python Pillow.Image 圖像保存和參數(shù)選擇方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01