最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?os?模塊與路徑從基礎(chǔ)到實(shí)戰(zhàn)應(yīng)用

 更新時(shí)間:2025年08月22日 16:07:51   作者:qwerty12ljhxjdj  
本文詳解Python中os模塊與路徑處理,涵蓋目錄創(chuàng)建、遍歷、刪除及文件操作,提供日志管理、數(shù)據(jù)備份等實(shí)戰(zhàn)案例,強(qiáng)調(diào)跨平臺(tái)兼容與異常處理最佳實(shí)踐,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧

在 Python 開(kāi)發(fā)中,文件和目錄的操作是必不可少的技能。無(wú)論是數(shù)據(jù)處理、日志記錄還是程序配置,都需要與文件系統(tǒng)交互。Python 的os模塊和os.path子模塊提供了豐富的接口,能夠輕松實(shí)現(xiàn)目錄創(chuàng)建、文件刪除、路徑處理等功能。本文將結(jié)合實(shí)例代碼,詳細(xì)講解這些模塊的核心用法。

一、路徑基礎(chǔ):理解路徑表示方式

在開(kāi)始操作文件系統(tǒng)前,首先需要掌握路徑的表示方法:

  • ./:表示當(dāng)前目錄(即運(yùn)行腳本所在的目錄)
  • ../:表示上一級(jí)目錄
  • 不同操作系統(tǒng)的路徑分隔符不同(Windows 用\,Linux/macOS 用/),可通過(guò)os.sep獲取當(dāng)前系統(tǒng)的分隔符

二、os 模塊核心功能:目錄與文件操作

os模塊提供了直接與操作系統(tǒng)交互的功能,涵蓋目錄創(chuàng)建、查看、刪除等常用操作。

1. 獲取當(dāng)前工作目錄與路徑分隔符

import os
# 獲取當(dāng)前工作目錄(絕對(duì)路徑)
print(os.getcwd())  # 示例輸出:C:\project\demo
# 獲取當(dāng)前系統(tǒng)的路徑分隔符(Windows為\,Linux/macOS為/)
print(os.sep)  # 示例輸出:\(Windows系統(tǒng))

2. 目錄創(chuàng)建:os.makedirs()

os.makedirs()支持遞歸創(chuàng)建目錄(即同時(shí)創(chuàng)建多級(jí)目錄),無(wú)需手動(dòng)逐級(jí)創(chuàng)建父目錄。

# 遞歸創(chuàng)建單級(jí)子目錄
os.makedirs('./data/sub3')  # 在當(dāng)前目錄創(chuàng)建data目錄,再在其中創(chuàng)建sub3目錄
# 遞歸創(chuàng)建多級(jí)子目錄
os.makedirs('./data/b3/c5')  # 創(chuàng)建data/b3/c5三級(jí)目錄

注意:如果目錄已存在,再次調(diào)用會(huì)報(bào)錯(cuò)??商砑?code>exist_ok=True參數(shù)避免錯(cuò)誤:

os.makedirs('./data/sub3', exist_ok=True)  # 目錄存在時(shí)不報(bào)錯(cuò)

3. 目錄查看:os.listdir()與os.walk()

(1)os.listdir():查看單層目錄

返回指定目錄下的所有子目錄和文件(僅顯示一級(jí),不遞歸)。

# 查看./data目錄下的內(nèi)容
print(os.listdir('./data'))  
# 示例輸出:['sub3', 'b3'](假設(shè)data目錄下有這兩個(gè)子目錄)

(2)os.walk():遞歸遍歷目錄

os.walk()是一個(gè)生成器,可遞歸遍歷目錄樹(shù),返回每個(gè)目錄的三元組(當(dāng)前目錄路徑, 子目錄列表, 文件列表)

# 遞歸遍歷./data目錄
gen = os.walk('./data')
# 第一次調(diào)用next():返回當(dāng)前目錄(data)的信息
print(next(gen))  
# 示例輸出:('./data', ['sub3', 'b3'], [])
# 第二次調(diào)用next():返回第一個(gè)子目錄(sub3)的信息
print(next(gen))  
# 示例輸出:('./data/sub3', [], [])
# 第三次調(diào)用next():返回第二個(gè)子目錄(b3)的信息
print(next(gen))  
# 示例輸出:('./data/b3', ['c5'], [])

實(shí)戰(zhàn):收集目錄下所有文件名稱

# 初始化文件列表
all_files = []
# 遍歷所有目錄,收集文件
for root, dirs, files in os.walk('./data'):
    all_files.extend(files)  # 將當(dāng)前目錄的文件添加到列表
print(all_files)  # 輸出所有文件名稱(如['111.py', '6.py'])

4. 目錄與文件刪除

(1)刪除文件:os.remove()

# 先判斷文件是否存在,避免報(bào)錯(cuò)
if os.path.exists('data/b3/c5/111.py'):
    os.remove('data/b3/c5/111.py')  # 刪除指定文件

(2)刪除空目錄:os.rmdir()與os.removedirs()

  • os.rmdir():僅刪除空的葉子目錄(目錄內(nèi)無(wú)文件和子目錄)。
  • os.removedirs():遞歸刪除空目錄(從最深層開(kāi)始,直到遇到非空目錄為止)。
# 刪除葉子目錄(必須為空)
if os.path.exists('data/sub3/cc'):
    os.rmdir('data/sub3/cc')
# 遞歸刪除空目錄(如刪除c5后,若b3為空則繼續(xù)刪除b3)
if os.path.exists('data/b3/c5'):
    os.removedirs('data/b3/c5')

注意:如果目錄非空(包含文件或子目錄),刪除會(huì)報(bào)錯(cuò)。刪除非空目錄需使用shutil.rmtree()(需導(dǎo)入shutil模塊)。

三、os.path 模塊:路徑處理工具

os.path模塊提供了一系列路徑處理函數(shù),解決不同操作系統(tǒng)路徑格式差異的問(wèn)題,確保路徑操作跨平臺(tái)兼容。

1. 判斷路徑類型

  • os.path.isdir(path):判斷是否為目錄。
  • os.path.isfile(path):判斷是否為文件。
import os.path
# 判斷是否為目錄
print(os.path.isdir('./data/sub3/test'))  # 輸出:False(假設(shè)test不存在)
# 判斷是否為文件
print(os.path.isfile('./data/sub3/6.py'))  # 輸出:True(假設(shè)文件存在)

2. 獲取文件大小

os.path.getsize(path)返回文件的大?。▎挝唬鹤止?jié))。

# 獲取文件大小
print(os.path.getsize('./data/sub3/6.py'))  # 示例輸出:1024(表示1024字節(jié))

3. 路徑分割與拼接

  • os.path.split(path):將路徑分割為(目錄部分, 文件名)。
  • os.path.join(path1, path2, ...):拼接多個(gè)路徑片段,自動(dòng)使用當(dāng)前系統(tǒng)的分隔符。
# 分割路徑
print(os.path.split('./data/sub3/6.py'))  
# 輸出:('./data/sub3', '6.py')
# 拼接路徑
print(os.path.join(r'.\data\sub3', '6.py'))  
# 輸出:.\data\sub3\6.py(Windows系統(tǒng))
# 或 ./data/sub3/6.py(Linux/macOS系統(tǒng))

優(yōu)勢(shì)os.path.join()會(huì)自動(dòng)適配系統(tǒng)分隔符,避免手動(dòng)寫死/\導(dǎo)致的跨平臺(tái)問(wèn)題。

四、實(shí)戰(zhàn)場(chǎng)景與最佳實(shí)踐

  • 常見(jiàn)應(yīng)用場(chǎng)景
    • 日志文件管理:創(chuàng)建按日期分類的日志目錄(如./logs/2025-07)。
    • 數(shù)據(jù)備份:遍歷指定目錄,復(fù)制或壓縮所有文件。
    • 程序初始化:?jiǎn)?dòng)時(shí)創(chuàng)建必要的配置目錄(如./config./cache)。
  • 最佳實(shí)踐
    • 路徑操作優(yōu)先使用os.path模塊,避免硬編碼分隔符(如/\)。
    • 刪除文件 / 目錄前務(wù)必檢查是否存在(用os.path.exists()),避免報(bào)錯(cuò)。
    • 遞歸遍歷目錄時(shí),使用os.walk()的生成器特性,減少內(nèi)存占用。
    • 處理大型目錄時(shí),結(jié)合try-except捕獲權(quán)限不足等異常:
try:
    os.makedirs('./data/sub3')
except PermissionError:
    print("無(wú)權(quán)限創(chuàng)建目錄")

五、總結(jié)

osos.path模塊是 Python 文件系統(tǒng)操作的核心工具,通過(guò)本文的學(xué)習(xí),你已掌握:

  • 目錄的創(chuàng)建、查看、刪除(os.makedirs()、os.walk()os.remove()等)。
  • 路徑的判斷、分割、拼接(os.path.isdir()os.path.join()等)。
  • 跨平臺(tái)路徑處理的最佳實(shí)踐。

到此這篇關(guān)于Python os 模塊與路徑從基礎(chǔ)到實(shí)戰(zhàn)應(yīng)用的文章就介紹到這了,更多相關(guān)python os模塊路徑內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • simple-pytest?框架使用教程

    simple-pytest?框架使用教程

    simple-pytest框架主要參考了httprunner的yaml數(shù)據(jù)驅(qū)動(dòng)部分設(shè)計(jì)思路,是基于Pytest?+?Pytest-html+?Log?+?Yaml?+?Mysql?實(shí)現(xiàn)的簡(jiǎn)易版接口自動(dòng)化框架,這篇文章主要介紹了simple-pytest?框架使用指南,需要的朋友可以參考下
    2024-02-02
  • python爬蟲(chóng)實(shí)現(xiàn)獲取下一頁(yè)代碼

    python爬蟲(chóng)實(shí)現(xiàn)獲取下一頁(yè)代碼

    在本篇文章里小編給大家整理了關(guān)于python爬蟲(chóng)實(shí)現(xiàn)獲取下一頁(yè)代碼內(nèi)容,需要的朋友們可以參考學(xué)習(xí)下。
    2020-03-03
  • Python pip 命令從入門到精通及最佳實(shí)踐

    Python pip 命令從入門到精通及最佳實(shí)踐

    pip是Python生態(tài)中不可或缺的工具,掌握它的各種命令和選項(xiàng)能夠極大提升開(kāi)發(fā)效率,本文從基礎(chǔ)命令到高級(jí)用法,再到配置和常見(jiàn)問(wèn)題,全面覆蓋了pip 的使用場(chǎng)景,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • Python 如何引入同級(jí)包和模塊

    Python 如何引入同級(jí)包和模塊

    這篇文章主要介紹了Python 如何引入同級(jí)包和模塊,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Python代碼實(shí)現(xiàn)為PDF添加頁(yè)碼(附詳細(xì)教程)

    Python代碼實(shí)現(xiàn)為PDF添加頁(yè)碼(附詳細(xì)教程)

    在處理合同、報(bào)告、論文、技術(shù)文檔等 PDF 時(shí),給頁(yè)面添加頁(yè)碼幾乎是必備功能,本文將介紹如何使用 Spire.PDF for Python 這個(gè)強(qiáng)大的庫(kù),通過(guò)簡(jiǎn)單的代碼為 PDF 文件自動(dòng)添加 中文頁(yè)碼 ,希望對(duì)大家有所幫助
    2026-05-05
  • Python語(yǔ)言描述最大連續(xù)子序列和

    Python語(yǔ)言描述最大連續(xù)子序列和

    這篇文章主要介紹了Python語(yǔ)言描述最大連續(xù)子序列和,具有一定借鑒價(jià)值,需要的朋友可以了解下。
    2017-12-12
  • Keras-多輸入多輸出實(shí)例(多任務(wù))

    Keras-多輸入多輸出實(shí)例(多任務(wù))

    這篇文章主要介紹了Keras-多輸入多輸出實(shí)例(多任務(wù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 新手常犯的10個(gè)Python錯(cuò)誤及解決方法總結(jié)

    新手常犯的10個(gè)Python錯(cuò)誤及解決方法總結(jié)

    在學(xué)習(xí) Python 的過(guò)程中,新手開(kāi)發(fā)者經(jīng)常會(huì)遇到一些常見(jiàn)的錯(cuò)誤,今天,就讓我們一起看看這些常見(jiàn)錯(cuò)誤及其解決方法,幫助你更快地掌握 Python 編程
    2025-10-10
  • python利用元類和描述器實(shí)現(xiàn)ORM模型的詳細(xì)步驟

    python利用元類和描述器實(shí)現(xiàn)ORM模型的詳細(xì)步驟

    Python中的類與數(shù)據(jù)庫(kù)之間的映射,對(duì)數(shù)據(jù)的操作就不用編寫SQL語(yǔ)言了,因?yàn)槎挤庋b好了,比如你想插入一條數(shù)據(jù),你就直接創(chuàng)建一個(gè)對(duì)象即可,下面通過(guò)本文學(xué)習(xí)下python利用元類和描述器實(shí)現(xiàn)ORM模型的詳細(xì)步驟,感興趣的朋友一起看看吧
    2021-11-11
  • python中實(shí)現(xiàn)php的var_dump函數(shù)功能

    python中實(shí)現(xiàn)php的var_dump函數(shù)功能

    這篇文章主要介紹了python中實(shí)現(xiàn)php的var_dump函數(shù)功能,var_dump函數(shù)在PHP中調(diào)試時(shí)非常實(shí)用,本文介紹在Python中實(shí)現(xiàn)這個(gè)函數(shù),需要的朋友可以參考下
    2015-01-01

最新評(píng)論

静海县| 高碑店市| 含山县| 临猗县| 鄂伦春自治旗| 阿尔山市| 韶关市| 望都县| 阿鲁科尔沁旗| 政和县| 灵山县| 六盘水市| 河西区| 文山县| 咸阳市| 乐陵市| 青阳县| 阜康市| 关岭| 香港| 本溪| 雷山县| 和平县| 济源市| 湖州市| 多伦县| 莱州市| 赤峰市| 花莲市| 株洲县| 盐城市| 西宁市| 永新县| 静宁县| 安义县| 邢台市| 通山县| 涿州市| 铜山县| 来安县| 伊宁市|