Python四大模塊文件管理介紹
一、os模塊
1、方法大綱

2、常用方法
| 方法 | 描述 |
|---|---|
| getcwd() | 獲取當前工作目錄 |
| chdir(path) | 將當前的工作目錄更改為指定的路徑 |
| listdir(path=None) | 列出指定目錄中的文件名。如果 path 為 None,則使用 path=‘.’。 |
| mkdir(path, mode=511, *, dir_fd=None) | 創(chuàng)建目錄 |
| makedirs(name, mode=511, exist_ok=False) | 遞歸創(chuàng)建多層目錄 |
| rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) | 重命名文件或目錄 |
| remove(path, *, dir_fd=None) | 刪除文件 |
| rmdir(path, *, dir_fd=None) | 刪除目錄 |
| removedirs(name) | 遞歸刪除目錄,從子目錄到父目錄逐層嘗試刪除,遇到目錄非空拋出異常。 |
| walk(top, topdown=True, onerror=None, followlinks=False) | 遍歷 top 路徑下的所有子目錄,返回一個包含 3 個元素的元組:(dirpath, dirnames, filenames)。 |
| os.curdir | 指代當前目錄(‘.’) |
| os.pardir | 指代上一級目錄(‘…’) |
| os.sep | 路徑分割符(Windows 為 ‘\’,Linux 為 ‘/’) |
| os.linesep | 行終止符(Windows 為 ‘\r\n’,Linux 為 ‘\n’) |
| os.name | 指代當前使用的操作系統(tǒng)(Windows 系統(tǒng)為 ‘nt’,Linux 為 ‘posix’) |
二、glob模塊
1、方法大綱
glob模塊也是Python標準庫中一個重要的模塊,主要用來查找符合特定規(guī)則的目錄和文件,并將搜索的到的結(jié)果返回到一個列表中。使用這個模塊最主要的原因就是,該模塊支持幾個特殊的正則通配符,用起來賊方便,這個將會在下方為大家進行詳細講解。

2、使用示例
import glob path1 = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\[0-9].png" print(glob.glob(path1)) path2 = r"C:\Users\黃偉\Desktop\publish\os模塊\test_shutil_a\[0-9a-z].*" print(glob.glob(path2))
注意:這個函數(shù)里面還有一個參數(shù),recursive,當其為真時,則模式’**'將與任何文件匹配,并且
零或更多目錄和子目錄。
三、shutil模塊
1、方法大綱
os模塊是Python標準庫中一個重要的模塊,里面提供了對目錄和文件的一般常用操作。而Python另外一個標準庫——shutil模塊,它作為os模塊的補充,提供了復(fù)制、移動、刪除、壓縮、解壓等操作,這些 os 模塊中一般是沒有提供的。但是需要注意的是:shutil模塊對壓縮包的處理是調(diào)用ZipFile和TarFile這兩個模塊來進行的。

2、壓縮包
對壓縮包管理是使用zipfile模塊
import zipfile
import os
file_list = os.listdir(os.getcwd()) # 獲取當前目錄
# 將上述所有文件,進行打包,使用“w”
with zipfile.ZipFile(r"我創(chuàng)建的壓縮包.zip", "w") as zipobj: # 對文件進行壓縮
for file in file_list:
zipobj.write(file) # 將文件寫入壓縮包中
四、pathlib模塊
1、對比圖
| 操作 | os and os.path | pathlib |
|---|---|---|
| 絕對路徑 | os.path.abspath | Path.resolve |
| 修改權(quán)限 | os.chmod | Path.chmod |
| 創(chuàng)建目錄 | os.mkdir | Path.mkdir |
| 重命名 | os.rename | Path.rename |
| 移動 | os.replace | Path.replace |
| 刪除目錄 | os.rmdir | Path.rmdir |
| 刪除文件 | os.remove, os.unlink | Path.unlink |
| 工作目錄 | os.getcwd | Path.cwd |
| 是否存在 | os.path.exists | Path.exists |
| 用戶目錄 | os.path.expanduser | Path.expanduser and Path.home |
| 是否為目錄 | os.path.isdir | Path.is_dir |
| 是否為文件 | os.path.isfile | Path.is_file |
| 是否為連接 | os.path.islink | Path.is_symlink |
| 文件屬性 | os.stat | Path.stat, Path.owner, Path.group |
| 是否為絕對路徑 | os.path.isabs | PurePath.is_absolute |
| 路徑拼接 | os.path.join | PurePath.joinpath |
| 文件名 | os.path.basename | PurePath.name |
| 上級目錄 | os.path.dirname | PurePath.parent |
| 同名文件 | os.path.samefile | Path.samefile |
| 后綴 | os.path.splitext | PurePath.suffix |
2、路徑獲取
獲取當前工作目錄
import pathlib print(pathlib.Path.cwd()) # 雖然在這里打印出來的很像一個字符串,但實際上得到的是一個WindowsPath對象 # 其實現(xiàn)了 __repr__ 和 __str__ 底層方法 print(pathlib.Path(__file__)) # 獲取當前文件路徑
工作目錄是在哪個目錄下運行你的程序,不是項目目錄
獲取家目錄
import pathlib print(pathlib.Path.home()) # 獲取當前用戶的家目錄
獲取文件絕對路徑
from pathlib import Path # 當前文件路徑 p = Path(__file__) print(p) print(p.absolute()) # 將路徑轉(zhuǎn)換為絕對路徑,p.resolve()功能也是一樣的
遍歷當前目錄
from pathlib import Path
# 當前文件路徑
p = Path('files')
for i in p.iterdir():
print(i.absolute())
"""運行結(jié)果:
C:\Users\3500\PycharmProjects\untitled3\demo\files\json
C:\Users\3500\PycharmProjects\untitled3\demo\files\username.txt
C:\Users\3500\PycharmProjects\untitled3\demo\files\yaml
"""
3、文件屬性
from pathlib import Path
# 當前文件路徑
p = Path(__file__)
print(p.absolute()) # 獲取絕對路徑
print(p.resolve()) # 獲取絕對路徑
print(p.name) # 獲取文件名稱 'test.py'
print(p.stem) # 只要文件名,不要后綴 test
print(p.suffix) # 獲取文件 后綴.py
print(p.suffixes) # 文件所有的后綴 ['.py']
print(p.parts) # 拆分('C:\\', 'Users', '3500', 'PycharmProjects', 'untitled3', 'demo', 'test.py')
print(p.parent) # 獲取當前路徑的父級目錄,C:\Users\35000\PycharmProjects\untitled3\demo
print(p.parent.parent) # C:\Users\3500\PycharmProjects\untitled3
print(p.parents) # 所有的父級 <WindowsPath.parents>
print(p.anchor) # 錨,目錄前面的部分 C:\ 或者 /
4、文件判斷
from pathlib import Path
# 1. is_file() 判斷是不是文件
print(Path.cwd().is_file()) # False
# 2. is_dir() 判斷是不是文件夾
print(Path.cwd().is_dir()) # True
# exists() 判斷文件是否存在
p = Path('./data.json')
print(p.exists()) # True or False
from pathlib import Path
# 當前文件路徑
p = Path(__file__) # 獲取當前文件的路徑
print(p.is_absolute()) # True5、路徑拼接
from pathlib import Path
# 當前文件路徑
p = Path('./')
print(p.absolute()) # C:\Users\3500\PycharmProjects\untitled3\demo
print(p.joinpath('data.json')) # data.json
print(p.joinpath('data.json').absolute()) # C:\Users\3500\PycharmProjects\untitled3\demo\data.json
# 拼接多層
print(p.joinpath('files', 'data.json')) # files\data.json
print(p.joinpath('files', 'data.json').absolute()) # C:\Users\3500\PycharmProjects\untitled3\demo\files\data.json6、正則匹配
使用模式匹配(正則表達式)匹配指定的路徑。glob 只會匹配當前目錄下, rglob 會遞歸所有子目錄
比如在當前腳本的 files 目錄有以下文件夾和子文件
from pathlib import Path
p = Path('files')
# glob 只會遍歷查找當前目錄
print(p.glob('*.txt')) # <generator object Path.glob at 0x000001A44565A518>
print([i for i in p.glob('*.txt')]) # [WindowsPath('files/username.txt')]
print([i for i in p.glob('*.yml')]) # []
# rglob 只會遍歷查找當前目錄以及其子目錄
print(p.rglob('*.txt')) # <generator object Path.glob at 0x000001A44565A518>
print([i for i in p.rglob('*.txt')]) # [WindowsPath('files/username.txt')]
print([i for i in p.rglob('*.yml')]) # [WindowsPath('files/yaml/aa.yml'), WindowsPath('files/yaml/bb.yml')]
p_ = Path('data.json')
# math 檢查匹配規(guī)則
print(p_.match('*.json')) # True
7、讀寫操作
pathlib 對讀取和寫入進行了簡單的封裝,不再需要重復(fù)去打開文件和管理文件的關(guān)閉了。
.read_text()讀取文本.read_bytes()讀取 bytes.write_text()寫入文本.write_bytes()寫入 tytes
from pathlib import Path
p = Path('yo.txt')
p.write_text("hello world")
print(p.read_text()) # hello world
file.write 操作使用的是 w 模式,如果之前已經(jīng)有文件內(nèi)容,將會被覆蓋。
當然,pathlib還可以進行文件的創(chuàng)建,刪除,以及修改操作,其與os中的方法一樣,可以自行去研究
到此這篇關(guān)于Python四大模塊文件管理介紹的文章就介紹到這了,更多相關(guān)Python文件管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
12個Python程序員面試必備問題與答案(小結(jié))
這篇文章主要介紹了12個Python程序員面試必備問題與答案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06
python gui開發(fā)——制作抖音無水印視頻下載工具(附源碼)
這篇文章主要介紹了python gui開發(fā)——制作抖音無水印視頻下載工具(附源碼)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-02-02
Python中的TfidfVectorizer參數(shù)使用解析
這篇文章主要介紹了Python中的TfidfVectorizer參數(shù)使用解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

