欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python四大模塊文件管理介紹

 更新時(shí)間:2022年09月23日 10:37:47   作者:A-L-Kun  
我們可以使用python來操作文件,比如讀取文件內(nèi)容、寫入新的內(nèi)容等,本文主要介紹了Python IO文件管理的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

一、os模塊

1、方法大綱

2、常用方法

方法描述
getcwd()獲取當(dāng)前工作目錄
chdir(path)將當(dāng)前的工作目錄更改為指定的路徑
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 路徑下的所有子目錄,返回一個(gè)包含 3 個(gè)元素的元組:(dirpath, dirnames, filenames)。
os.curdir指代當(dāng)前目錄(‘.’)
os.pardir指代上一級目錄(‘…’)
os.sep路徑分割符(Windows 為 ‘\’,Linux 為 ‘/’)
os.linesep行終止符(Windows 為 ‘\r\n’,Linux 為 ‘\n’)
os.name指代當(dāng)前使用的操作系統(tǒng)(Windows 系統(tǒng)為 ‘nt’,Linux 為 ‘posix’)

二、glob模塊

1、方法大綱

glob模塊也是Python標(biāo)準(zhǔn)庫中一個(gè)重要的模塊,主要用來查找符合特定規(guī)則的目錄和文件,并將搜索的到的結(jié)果返回到一個(gè)列表中。使用這個(gè)模塊最主要的原因就是,該模塊支持幾個(gè)特殊的正則通配符,用起來賊方便,這個(gè)將會(huì)在下方為大家進(jìn)行詳細(xì)講解。

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))

注意:這個(gè)函數(shù)里面還有一個(gè)參數(shù),recursive,當(dāng)其為真時(shí),則模式’**'將與任何文件匹配,并且

零或更多目錄和子目錄。

三、shutil模塊

1、方法大綱

os模塊是Python標(biāo)準(zhǔn)庫中一個(gè)重要的模塊,里面提供了對目錄和文件的一般常用操作。而Python另外一個(gè)標(biāo)準(zhǔn)庫——shutil模塊,它作為os模塊的補(bǔ)充,提供了復(fù)制、移動(dòng)、刪除、壓縮、解壓等操作,這些 os 模塊中一般是沒有提供的。但是需要注意的是:shutil模塊對壓縮包的處理是調(diào)用ZipFileTarFile這兩個(gè)模塊來進(jìn)行的。

2、壓縮包

對壓縮包管理是使用zipfile模塊

import zipfile
import os
file_list = os.listdir(os.getcwd())  # 獲取當(dāng)前目錄
# 將上述所有文件,進(jìn)行打包,使用“w”
with zipfile.ZipFile(r"我創(chuàng)建的壓縮包.zip", "w") as zipobj:  # 對文件進(jìn)行壓縮
    for file in file_list:
        zipobj.write(file)  # 將文件寫入壓縮包中

四、pathlib模塊

1、對比圖

操作os and os.pathpathlib
絕對路徑os.path.abspathPath.resolve
修改權(quán)限os.chmodPath.chmod
創(chuàng)建目錄os.mkdirPath.mkdir
重命名os.renamePath.rename
移動(dòng)os.replacePath.replace
刪除目錄os.rmdirPath.rmdir
刪除文件os.remove, os.unlinkPath.unlink
工作目錄os.getcwdPath.cwd
是否存在os.path.existsPath.exists
用戶目錄os.path.expanduserPath.expanduser and Path.home
是否為目錄os.path.isdirPath.is_dir
是否為文件os.path.isfilePath.is_file
是否為連接os.path.islinkPath.is_symlink
文件屬性os.statPath.stat, Path.owner, Path.group
是否為絕對路徑os.path.isabsPurePath.is_absolute
路徑拼接os.path.joinPurePath.joinpath
文件名os.path.basenamePurePath.name
上級目錄os.path.dirnamePurePath.parent
同名文件os.path.samefilePath.samefile
后綴os.path.splitextPurePath.suffix

2、路徑獲取

獲取當(dāng)前工作目錄

import pathlib
print(pathlib.Path.cwd())  # 雖然在這里打印出來的很像一個(gè)字符串,但實(shí)際上得到的是一個(gè)WindowsPath對象
# 其實(shí)現(xiàn)了 __repr__ 和 __str__ 底層方法
print(pathlib.Path(__file__))  # 獲取當(dāng)前文件路徑

工作目錄是在哪個(gè)目錄下運(yùn)行你的程序,不是項(xiàng)目目錄

獲取家目錄

import pathlib
print(pathlib.Path.home())  # 獲取當(dāng)前用戶的家目錄

獲取文件絕對路徑

from pathlib import Path
# 當(dāng)前文件路徑
p = Path(__file__)
print(p)  
print(p.absolute())  # 將路徑轉(zhuǎn)換為絕對路徑,p.resolve()功能也是一樣的

遍歷當(dāng)前目錄

from pathlib import Path
# 當(dāng)前文件路徑
p = Path('files')
for i in p.iterdir():
    print(i.absolute())

"""運(yùn)行結(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
# 當(dāng)前文件路徑
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)  # 獲取當(dāng)前路徑的父級目錄,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
# 當(dāng)前文件路徑
p = Path(__file__)  # 獲取當(dāng)前文件的路徑
print(p.is_absolute())  # True

5、路徑拼接

from pathlib import Path
# 當(dāng)前文件路徑
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.json

6、正則匹配

使用模式匹配(正則表達(dá)式)匹配指定的路徑。glob 只會(huì)匹配當(dāng)前目錄下, rglob 會(huì)遞歸所有子目錄

比如在當(dāng)前腳本的 files 目錄有以下文件夾和子文件

from pathlib import Path
p = Path('files')
# glob 只會(huì)遍歷查找當(dāng)前目錄
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 只會(huì)遍歷查找當(dāng)前目錄以及其子目錄
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 對讀取和寫入進(jìn)行了簡單的封裝,不再需要重復(fù)去打開文件和管理文件的關(guān)閉了。

  1. .read_text() 讀取文本
  2. .read_bytes() 讀取 bytes
  3. .write_text() 寫入文本
  4. .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)容,將會(huì)被覆蓋。

當(dāng)然,pathlib還可以進(jìn)行文件的創(chuàng)建,刪除,以及修改操作,其與os中的方法一樣,可以自行去研究

到此這篇關(guān)于Python四大模塊文件管理介紹的文章就介紹到這了,更多相關(guān)Python文件管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談Python中的可變對象和不可變對象

    淺談Python中的可變對象和不可變對象

    下面小編就為大家?guī)硪黄獪\談Python中的可變對象和不可變對象。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • python中的%?是什么意思,起到什么作用呢

    python中的%?是什么意思,起到什么作用呢

    %Y會(huì)被無世紀(jì)的年份所替代,%m會(huì)被01到12之間的一個(gè)十進(jìn)制月份數(shù)替代,其他依次類推,%在python的格式化輸出,有轉(zhuǎn)換字符的作用,本文給大家講解python中的%?是什么意思,起到什么作用,感興趣的朋友一起看看吧
    2022-12-12
  • 用python制作詞云視頻詳解

    用python制作詞云視頻詳解

    這篇文章主要介紹了用python制作詞云視頻詳解,原理解釋清晰,代碼詳細(xì),用于練習(xí)很適合,需要的朋友可以參考下
    2021-04-04
  • 一文了解Python?流程控制

    一文了解Python?流程控制

    這篇文章主要介紹了一文了解Python?流程控制,Python?中有while和for兩種循環(huán)機(jī)制,其中while循環(huán)是條件循環(huán),文章通過展開循環(huán)內(nèi)容展開控制流程詳情,需要的小伙伴可以參考一下
    2022-05-05
  • 12個(gè)Python程序員面試必備問題與答案(小結(jié))

    12個(gè)Python程序員面試必備問題與答案(小結(jié))

    這篇文章主要介紹了12個(gè)Python程序員面試必備問題與答案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-06-06
  • python gui開發(fā)——制作抖音無水印視頻下載工具(附源碼)

    python gui開發(fā)——制作抖音無水印視頻下載工具(附源碼)

    這篇文章主要介紹了python gui開發(fā)——制作抖音無水印視頻下載工具(附源碼)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-02-02
  • Python中的TfidfVectorizer參數(shù)使用解析

    Python中的TfidfVectorizer參數(shù)使用解析

    這篇文章主要介紹了Python中的TfidfVectorizer參數(shù)使用解析,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • python實(shí)現(xiàn)共軛梯度法

    python實(shí)現(xiàn)共軛梯度法

    這篇文章主要介紹了python實(shí)現(xiàn)的共軛梯度法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Django實(shí)現(xiàn)文件上傳下載功能

    Django實(shí)現(xiàn)文件上傳下載功能

    這篇文章主要為大家詳細(xì)介紹了Django實(shí)現(xiàn)文件上傳下載功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Python中交換兩個(gè)元素的實(shí)現(xiàn)方法

    Python中交換兩個(gè)元素的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇Python中交換兩個(gè)元素的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論