Python 的 os 庫常見使用方法(操作目錄及文件)

前言:

os 模塊是 Python 標準庫中用于與操作系統交互的核心模塊,提供了許多操作文件和目錄的功能。以下是常見的使用方法:

1. 目錄操作

方法功能說明示例
os.getcwd()獲取當前工作目錄print(os.getcwd())
os.chdir(path)切換當前工作目錄os.chdir("/tmp")
os.listdir(path)列出目錄下的文件和子目錄files = os.listdir(".")
os.mkdir(path)創建單層目錄os.mkdir("new_dir")
os.makedirs(path)遞歸創建多層目錄os.makedirs("a/b/c")
os.rmdir(path)刪除空目錄os.rmdir("empty_dir")
os.removedirs(path)遞歸刪除空目錄os.removedirs("a/b/c")
os.path.isdir(path)判斷是否為目錄if os.path.isdir("dir"):

2. 文件操作

方法功能說明示例
os.remove(path)刪除文件os.remove("file.txt")
os.rename(src, dst)重命名文件或目錄os.rename("old.txt", "new.txt")
os.path.exists(path)判斷路徑是否存在if os.path.exists("file"):
os.path.isfile(path)判斷是否為文件if os.path.isfile("file"):
os.path.getsize(path)獲取文件大小(字節)size = os.path.getsize("file.txt")

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

方法功能說明示例
os.path.join(a, b)拼接路徑(跨平臺兼容)path = os.path.join("dir", "file.txt")
os.path.abspath(path)獲取絕對路徑abs_path = os.path.abspath(".")
os.path.dirname(path)獲取目錄部分dir = os.path.dirname("/tmp/file.txt")
os.path.basename(path)獲取文件名部分file = os.path.basename("/tmp/file.txt")
os.path.split(path)拆分目錄和文件名dir, file = os.path.split("/tmp/file.txt")

案例1:通過os庫方法獲取平臺信息

import os
# 1.os.set屬性:獲取本機操作系統的分隔符
print(os.sep) # \
# 2.os.name屬性:獲取本機操作系統的類型
print(os.name) # nt代表windows系統,posix代表Linux
# 3.os.getcwd()方法:獲取當前工作目錄
print(os.getcwd()) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os庫操作目錄及文件

案例2:通過os庫方法對目錄或文件進行增刪改查

# 4.1 os.listdir() 方法:獲取項目路徑下所有文件和目錄列表,并以列表的形式展示
print(os.listdir()) # ['1.os使用.py']
print(os.listdir("E:\\【書】【有用重要】2024軟件測試接口自動化和UI自動化完整代碼\\1.接口自動化 視頻+ppt+源代碼\\本書的學習流程.txt")) # 獲取指定盤符下的所有文件和目錄列表,并以列表形式展示
# 4.2 os.mkdir()方法創建目錄文件
os.mkdir("testcase") # 當前路徑下創建一個名為“testcase”的目錄
os.mkdir("E:\\testcast")
# 4.3 os.rmdir()方法:刪除一個空目錄
os.rmdir("testcase") # 刪除當前項目路徑下空目錄文件testcase
os.rmdir("E:\\testcast") # 刪除指定路徑下,空目錄文件testcase
# 4.4 os.remove()方法:刪除指定文件
os.remove("123.txt") # 刪除當前項目路徑下的"123.txt"文件
os.remove("E:\\data\\2.doc")
# 4.5 os.rename()方法:重命名目錄或文件 os.rename("原目錄名","新目錄名")
os.rename("score002.txt","score001.txt")

案例3:通過os.path子模塊來操作目錄及文件


# 1.__file__特殊成員:返回當前文件的全路徑
print(__file__) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os庫操作目錄及文件\1.os使用.py
# 2.os.path.dirname(__file__)方法:返回文件所在目錄
print(os.path.dirname(__file__)) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os庫操作目錄及文件
print(os.path.dirname(os.path.dirname(__file__))) # 文件所在目錄的上一級目錄 D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject
# 3. os.path.abspath(__file__)方法:返回文件絕對路徑
print(os.path.abspath(__file__)) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os庫操作目錄及文件\1.os使用.py
# 4.os.path.dirname(os.path.abspath(__file__)) 組合 :返回當前文件所在目錄
print(os.path.dirname(os.path.abspath(__file__))) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os庫操作目錄及文件
# 5.os.path.json() 路徑拼接 ?os.path.join(目錄 + 文件名)
print(os.path.join(os.path.dirname(os.path.abspath(__file__)),"Test.py")) # D:\ProjectAndRepositories\PyCharmWorkspace\jiangchubook\requestProject\第3章 使用os庫操作目錄及文件\Test.py
# 6.os.path.exists() 判斷路徑是否存在
os.path.isfile()# 是否為文件
os.path.isdir() # 是否為目錄conf_file = os.path.abspath(__file__) # 文件路徑完整
conf_path = os.path.dirname(conf_file) # 文件目錄
conf_file1 = os.path.join(conf_path,"score001.txt") # 目錄+文件名,拼的文件完整路徑
conf_path1 = os.path.dirname(os.path.dirname(conf_path)) # 上級目錄
conf_file2 = conf_path1 + os.sep + "接口自動化" +os.sep+"score001.txt" # 系統分割符os.sep,拼完整路徑os.path.exists(conf_file) # 存在
os.path.exists(conf_path) # 存在
os.path.isfile(conf_file1) # 是否為文件False, 拼的文件完整路徑
os.path.isdir(conf_path1) # 是目錄True

End

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83810.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83810.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83810.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue3 el-table實現字段可編輯

在Vue 3中,如果你想讓el-table(Element Plus的表格組件)的字段可編輯,你可以通過以下方式來實現: 使用cell-mouse-enter和cell-mouse-leave事件動態顯示編輯圖標或控件 你可以在鼠標進入單元格時顯示一個編輯圖標或輸…

基于shardingsphere的分庫分表方案

一、準備docker容器 啟動兩個mysql的docker容器 docker run -v /root/mysql_volume/data:/var/lib/mysql -v /root/mysql_volume/conf:/etc/mysql/conf.d -v /root/mysql_volume/my.cnf:/etc/my.cnf -p 3306:3306 --name mysql --restartalways --privilegedtrue -e MYSQL_RO…

SearxNG本地搜索引擎

SearxNG 是一個強大、開源的 元搜索引擎(meta search engine),它不會存儲用戶信息,注重隱私保護,并支持從多個搜索引擎聚合結果,用戶可以自建部署,打造一個無廣告、可定制的搜索平臺。 ?? 什么是 SearxNG? SearxNG 是 Searx 的一個積極維護的分支(fork),意在改進…

Vue3.5 企業級管理系統實戰(十九):菜單管理

篇幅原因,本節先探討菜單管理頁面增刪改查相關功能,角色菜單,菜單權限,動態菜單等內容放在后面。 1 菜單 api 在 src/api/menu.ts 中添加菜單 api,代碼如下: //src/api/menu.ts import service from &qu…

【android bluetooth 協議分析 01】【HCI 層介紹 8】【ReadLocalVersionInformation命令介紹】

1. HCI_Read_Local_Version_Information 命令介紹 1. 功能(Description) HCI_Read_Local_Version_Information 命令用于讀取本地 Bluetooth Controller 的版本信息,包括 HCI 和 LMP 層的版本,以及廠商 ID 和子版本號。 這類信息用…

React底層架構深度解析:從虛擬DOM到Fiber的演進之路

一、虛擬DOM:性能優化的基石 1.1 核心工作原理 React通過JSX語法將組件轉換為輕量級JavaScript對象(即虛擬DOM),而非直接操作真實DOM。這一過程由React.createElement()實現,其結構包含元素類型、屬性和子節點等信息&a…

從AlphaGo到ChatGPT:AI技術如何一步步改變世界?

從AlphaGo到ChatGPT:AI技術如何一步步改變世界? 這里給大家分享一個人工智能學習網站。點擊跳轉到網站。 https://www.captainbed.cn/ccc 前言 在科技發展的歷史長河中,人工智能(AI)技術無疑是最為璀璨的明珠之一。從…

關于在Unity項目中使用Post Processing插件打包到web端出現的問題

關于在Unity項目中使用Post Processing插件打包到web端出現的問題 解決方法:是不激活攝像機上的Post Processing有關組件,拉低場景中的Directional Light平行光的強度進行web端打包。 (烘焙燈光時是可以激活。) web端支持這個Pos…

MySQL - 如何突破單庫性能瓶頸

數據庫服務器硬件優化 我們來看看對數據庫所在的服務器是如何進行優化的,服務器是數據庫的宿主,其性能直接影響了數據庫的性能,所以服務器的優化也是數據庫優化的第一步。 數據庫服務器通常是從 CPU、內存、磁盤三個角度進行硬件優化的&…

用 CodeBuddy 搭建「MiniGoal 小目標打卡器」:一次流暢的 UniApp 開發體驗

我正在參加CodeBuddy「首席試玩官」內容創作大賽,本文所使用的 CodeBuddy 免費下載鏈接:騰訊云代碼助手 CodeBuddy - AI 時代的智能編程伙伴 在日常生活中,我們總是希望能夠堅持一些小習慣,比如每天鍛煉十分鐘、讀一頁書、早睡十分…

OpenCV 環境搭建與概述

// //OpenCV-4.11.0 C VS2019 // 一、OpenCV學習路線 1、入門: OpenCV圖像讀寫、視頻讀寫、基本像素處理、基本卷積處理、基本C開發知識。 2、初級: OpenCV自定義卷積操作、圖像梯度、邊緣提取、二值分析、視頻分析、形態學處理、幾何變換與透視變換。 3、中級: 角點查找、BL…

如何快速更換電腦瀏覽器ip:教程與注意事項

無論是為了訪問地域限制內容、保護隱私,還是解決網絡問題,快速更換瀏覽器IP地址的需求日益增多。以下是快速更換電腦瀏覽器IP地址的幾種常用方法及注意事項,結合了多種場景下的解決方案: 一、快速更換瀏覽器IP的方法 1. 代理服務…

【kafka】kafka概念,使用技巧go示例

1. Kafka基礎概念 1.1 什么是Kafka? Kafka是一個分布式流處理平臺,用于構建實時數據管道和流式應用。核心特點: 高吞吐量:每秒可處理百萬級消息持久化存儲:消息按Topic分區存儲在磁盤分布式架構:支持水平…

掌握Git:版本控制與高效協作指南

一、初始Git 提出問題:無論是在工作還是學習,我們在編寫各種文檔的時候,更改失誤,失誤后恢復到原來版本,不得不復制出一個副本。 每個版本由各自的內容,但最終只有一個報告需要被我們使用。 但在此之前的…

【生活相關-日語-日本-東京-搬家后-引越(ひっこし)(3)-踩坑點:國民健康保險】

【生活相關-日語-日本-東京-搬家后-引越(ひっこし)(3)-注意點:國民健康保險】 1、前言2、情況說明(1)問題說明(2)情況說明(1)收到情況&#xff08…

linux——mysql故障排查與生產環境優化

目錄 一,mysql數據庫常見的故障 1,故障現象1 2,故障現象2 3,故障現象3 4,故障現象4 5,故障現象5 6,故障現象6 二&…

【C#】用 DevExpress 創建帶“下拉子表”的參數表格視圖

展示如何用 DevExpress 創建帶“下拉子表”的參數表格視圖。主表為 參數行 ParamRow,子表為 子項 ChildParam。 一、創建模型類 public class ParamRow {public string Pn { get; set; }public string DisplayName { get; set; }public string Value { get; set; }…

【JavaScript】用 Proxy 攔截對象屬性

目錄 一、Proxy 的基本結構(打地基) 二、最常用的兩個攔截方法:get 和 set 1. get(target, key) 2. set(target, key, value) 三、說到這,那就可以回到題目來 四、什么是 Reflect? 總結不易,本章節對…

[IMX] 02.GPIO 寄存器

目錄 手冊對應章節 1.GPIO 復用(引腳功能選擇)- IOMUXC_SW_MUX_CTL_PAD_xxx 2.GPIO 電氣特性 - IOMUXC_SW_PAD_CTL_PAD_xxx 3.GPIO 數據與控制寄存器 3.1.數據 - DR 3.2.輸入/輸出選擇 - GDIR 3.3.狀態 - PSR 3.4.中斷觸發控制 - ICR 3.5.中斷使…

Tomcat 配置 HTTPS 訪問全攻略(CentOS 環境)

Tomcat 配置 HTTPS 訪問全攻略(CentOS 環境) 一、環境說明 操作系統:CentOS Tomcat 版本:Apache Tomcat/9.0.105 服務器 IP:192.168.1.35 目標:將 Tomcat 默認的 HTTP 訪問升級為 HTTPS,提…