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

Python中-os庫的用法超詳細介紹

 更新時間:2025年06月17日 10:42:03   投稿:daisy  
OS庫是Python標準庫,包含幾百個函數,提供通用的、基本的操作系統交互功能,這篇文章主要介紹了Python中-os庫用法的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

一、os 庫概述

  • ?功能:提供與操作系統交互的接口,包括文件管理、環(huán)境變量、進程控制、路徑操作等。
  • ?跨平臺特性:大部分函數支持 Windows、Linux、macOS,但部分功能存在系統差異。
  • ?核心模塊
    • os:基礎操作系統接口
    • os.path:路徑處理工具
  • ?導入方式
import os

二、常用功能分類詳解

?1. 路徑操作(os.path 模塊)?

函數描述示例輸出示例
os.path.abspath(path)返回絕對路徑os.path.abspath("test.txt")/home/user/test.txt
os.path.dirname(path)返回路徑的目錄部分os.path.dirname("/a/b/c.txt")/a/b
os.path.basename(path)返回路徑的文件名部分os.path.basename("/a/b/c.txt")c.txt
os.path.join(path1, path2)智能拼接路徑(跨平臺安全)os.path.join("dir", "file.txt")dir/file.txt
os.path.exists(path)檢查路徑是否存在os.path.exists("test.txt")True/False
os.path.isfile(path)檢查是否為文件os.path.isfile("test.txt")True
os.path.isdir(path)檢查是否為目錄os.path.isdir("docs")True
os.path.getsize(path)獲取文件大?。ㄗ止?jié))os.path.getsize("test.txt")1024
os.path.splitext(path)分割文件名和擴展名os.path.splitext("file.txt")('file', '.txt')

2. 目錄管理

函數描述示例注意
os.getcwd()獲取當前工作目錄print(os.getcwd())返回絕對路徑
os.chdir(path)切換當前工作目錄os.chdir("..")失敗拋出 FileNotFoundError
os.listdir(path=".")列出目錄內容os.listdir("/tmp")返回文件名列表(不遞歸)
os.mkdir(path)創(chuàng)建單層目錄os.mkdir("new_dir")目錄已存在時拋出 FileExistsError
os.makedirs(path)遞歸創(chuàng)建多層目錄os.makedirs("a/b/c")類似 mkdir -p
os.rmdir(path)刪除空目錄os.rmdir("empty_dir")目錄非空時拋出 OSError
os.removedirs(path)遞歸刪除空目錄os.removedirs("a/b/c")從最深層開始向上刪除

3. 文件操作

函數描述示例注意
os.remove(path)刪除文件os.remove("temp.txt")文件不存在時拋出 FileNotFoundError
os.rename(src, dst)重命名/移動文件或目錄os.rename("old.txt", "new.txt")跨磁盤移動可能失敗
os.stat(path)獲取文件狀態(tài)信息st = os.stat("file.txt")st.st_size返回包含大小、時間等的對象
os.utime(path, times)修改文件訪問/修改時間os.utime("file.txt", (atime, mtime))時間戳為秒數

4. 進程管理

函數描述示例注意
os.system(command)執(zhí)行系統命令os.system("ls -l")返回命令退出狀態(tài)碼
os.popen(command)執(zhí)行命令并獲取輸出(已廢棄)output = os.popen("date").read()建議改用 subprocess
os.exec*() 系列替換當前進程(如 os.execlpos.execlp("python", "python", "script.py")執(zhí)行后原進程終止
os.kill(pid, signal)向進程發(fā)送信號os.kill(pid, signal.SIGTERM)Windows 支持有限

5. 環(huán)境變量管理

函數/屬性描述示例注意
os.environ字典形式的環(huán)境變量os.environ["PATH"]修改后僅影響當前進程
os.getenv(key, default)獲取環(huán)境變量值os.getenv("HOME", "/tmp")鍵不存在時返回 default
os.putenv(key, value)設置環(huán)境變量(不推薦)os.putenv("DEBUG", "1")建議直接操作 os.environ

6. 系統信息

函數/屬性描述示例輸出示例
os.name操作系統名稱print(os.name)posix(Linux/macOS)
nt(Windows)
os.sep路徑分隔符os.sep/ 或 \
os.linesep行終止符os.linesep\n(Linux)
\r\n(Windows)
os.cpu_count()返回 CPU 核心數os.cpu_count()8

三、實際應用示例

?1. 遞歸遍歷目錄

def list_files(startpath):
    for root, dirs, files in os.walk(startpath):
        level = root.replace(startpath, '').count(os.sep)
        indent = ' ' * 4 * level
        print(f"{indent}{os.path.basename(root)}/")
        subindent = ' ' * 4 * (level + 1)
        for f in files:
            print(f"{subindent}{f}")

list_files("/tmp")

 os.walk(path) 是 Python 中用于遞歸遍歷目錄結構的核心函數,可深度遍歷指定路徑下的所有子目錄和文件。以下從功能、參數、返回值到應用場景的全面解析:

①、核心功能與運行機制

  • ?目錄樹遍歷以 path 為根目錄,逐層遍歷所有子目錄,生成目錄樹的完整結構。支持 ?深度優(yōu)先 或 ?廣度優(yōu)先 遍歷(通過 topdown 參數控制)。

  • ?數據生成方式返回一個 ?生成器?(generator),按需生成三元組 (root, dirs, files),避免一次性加載所有路徑導致內存壓力。

②、參數詳解

python

os.walk(top, topdown=True, onerror=None, followlinks=False)
參數類型作用
topstr要遍歷的根目錄路徑
topdownbool默認 True:先返回父目錄再子目錄;False 則逆序(從葉子節(jié)點向上)
onerrorcallable遍歷出錯時的回調函數(接收異常對象作為參數)
followlinksbool是否追蹤符號鏈接指向的真實目錄(默認 False

③、返回值解析

每次迭代返回的三元組包含:

  • ?**root**
    當前遍歷的目錄絕對路徑(如 "/data/images/cats")。
  • ?**dirs**
    當前目錄下的 ?直接子目錄名列表?(不含路徑,如 ["2023", "2024"])。
  • ?**files**
    當前目錄下的 ?文件名列表?(不含路徑,如 ["cat1.jpg", "cat2.png"])。

示例目錄結構

markdown

root/
├── dir1/
│   ├── file1.txt
│   └── subdir/
└── dir2/
    └── file2.log

對應的遍歷輸出:

python

# 第一次迭代
('root', ['dir1', 'dir2'], [])  
# 第二次迭代(進入 dir1)
('root/dir1', ['subdir'], ['file1.txt'])  
# 第三次迭代(進入 subdir)
('root/dir1/subdir', [], [])  
# 第四次迭代(進入 dir2)
('root/dir2', [], ['file2.log'])

 遍歷所有文件并獲取完整路徑

python

import os

for root, dirs, files in os.walk("data"):
    for file in files:
        full_path = os.path.join(root, file)  # 拼接完整路徑[3,6](@ref)
        print(f"發(fā)現文件:{full_path}")

2. 批量重命名文件

folder = "docs"
for filename in os.listdir(folder):
    if filename.endswith(".txt"):
        new_name = filename.replace(" ", "_")
        os.rename(
            os.path.join(folder, filename),
            os.path.join(folder, new_name)
        )

3. 安全創(chuàng)建臨時目錄

import tempfile

def create_temp_dir():
    temp_dir = tempfile.mkdtemp()
    try:
        print(f"臨時目錄已創(chuàng)建: {temp_dir}")
        # 執(zhí)行操作...
    finally:
        os.rmdir(temp_dir)
        print("臨時目錄已刪除")

四、注意事項

?1. 路徑處理

  • ?不要手動拼接路徑:使用 os.path.join() 替代字符串拼接,避免跨平臺問題:
# 錯誤方式
path = "dir" + "/" + "file.txt"  # 在Windows下失效

# 正確方式
path = os.path.join("dir", "file.txt")

2. 異常處理

  • 文件操作需捕獲常見異常:
try:
    os.remove("non_exist.txt")
except FileNotFoundError as e:
    print(f"文件不存在: {e}")

3. 安全性

  • ?謹慎使用 os.system():可能引發(fā)命令注入漏洞,優(yōu)先使用 subprocess.run()
# 危險!用戶輸入可能包含惡意命令
user_input = "some; rm -rf /"
os.system(f"echo {user_input}")

# 安全方式
import subprocess
subprocess.run(["echo", user_input], check=True)

4. 跨平臺兼容性

  • 檢查系統差異:
if os.name == 'posix':
    print("運行在 Unix-like 系統")
elif os.name == 'nt':
    print("運行在 Windows 系統")

五、與 shutil 庫的對比

功能os 庫shutil 庫
?文件復制?? 無直接支持shutil.copy()
?目錄刪除?? 只能刪空目錄shutil.rmtree() 遞歸刪除
?壓縮文件?? 無支持shutil.make_archive()
?元數據保留?? 需手動處理copystat() 保留權限和時間

到此這篇關于Python中-os庫用法介紹的文章就介紹到這了,更多相關Python -os庫介紹內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Django DRF認證組件流程實現原理詳解

    Django DRF認證組件流程實現原理詳解

    這篇文章主要介紹了Django DRF認證組件流程實現原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • Python實現微信高效自動化操作

    Python實現微信高效自動化操作

    在如今數字化時代,人們對于效率的追求越來越強烈,而PyAutoGUI和Pyperclip作為Python中的兩個強大庫,為我們實現自動化操作提供了便利,下面我們就來看看如何利用這兩個庫實現微信自動化操作吧
    2023-10-10
  • Python接口自動化淺析數據驅動原理

    Python接口自動化淺析數據驅動原理

    這篇文章主要介紹了Python接口自動化淺析數據驅動原理,文中會詳細描述怎樣使用openpyxl模塊操作excel及結合ddt來實現數據驅動,有需要的朋友可以參考下
    2021-08-08
  • matplotlib之pyplot模塊坐標軸范圍設置(autoscale(),xlim(),ylim())

    matplotlib之pyplot模塊坐標軸范圍設置(autoscale(),xlim(),ylim())

    這篇文章主要介紹了matplotlib之pyplot模塊坐標軸范圍設置(autoscale(),xlim(),ylim()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • python中dict字典的查詢鍵值對 遍歷 排序 創(chuàng)建 訪問 更新 刪除基礎操作方法

    python中dict字典的查詢鍵值對 遍歷 排序 創(chuàng)建 訪問 更新 刪除基礎操作方法

    字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中,本文講述了python中dict字典的查詢鍵值對 遍歷 排序 創(chuàng)建 訪問 更新 刪除基礎操作方法
    2018-09-09
  • python找出因數與質因數的方法

    python找出因數與質因數的方法

    這篇文章主要介紹了python找出因數與質因數的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • python實現學生通訊錄管理系統

    python實現學生通訊錄管理系統

    這篇文章主要為大家詳細介紹了python實現學生通訊錄管理系統,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Python列表list內建函數用法實例分析【insert、remove、index、pop等】

    Python列表list內建函數用法實例分析【insert、remove、index、pop等】

    這篇文章主要介紹了Python列表list內建函數用法,結合具體實例形式分析了list中insert、remove、index、pop等函數的功能、使用方法與相關注意事項,需要的朋友可以參考下
    2017-07-07
  • Python的三種主要模塊介紹

    Python的三種主要模塊介紹

    這篇文章介紹了Python的三類主要模塊,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Python 找到列表中滿足某些條件的元素方法

    Python 找到列表中滿足某些條件的元素方法

    今天小編就為大家分享一篇Python 找到列表中滿足某些條件的元素方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06

最新評論

绥棱县| 泗阳县| 北安市| 招远市| 陇南市| 江阴市| 陈巴尔虎旗| 安平县| 新密市| 资兴市| 绥宁县| 盐池县| 澄城县| 县级市| 景德镇市| 稷山县| 榆林市| 澄城县| 南召县| 汉源县| 邻水| 克东县| 荃湾区| 礼泉县| 濮阳市| 永吉县| 江北区| 三河市| 交城县| 冀州市| 邹城市| 游戏| 夹江县| 新田县| 南投县| 万载县| 甘德县| 巫溪县| 贵阳市| 古蔺县| 泸州市|