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

Python常用基礎(chǔ)模塊之os.path模塊詳解

 更新時間:2023年08月01日 11:24:42   作者:Amo Xiang  
這篇文章主要介紹了Python常用基礎(chǔ)模塊之os.path模塊詳解,os模塊的子模塊os.path 是專門用于進行路徑操作的模塊,常用的路徑操作主要有判斷目錄是否存在、創(chuàng)建目錄、刪除目錄和遍歷目錄等,需要的朋友可以參考下

一、os.path模塊介紹

os 模塊是 Python 內(nèi)置的與操作系統(tǒng)功能和文件系統(tǒng)相關(guān)的模塊。

該模塊的子模塊 os.path 是專門用于進行路徑操作的模塊。

常用的路徑操作主要有判斷目錄是否存在、創(chuàng)建目錄、刪除目錄和遍歷目錄等。

說明:在使用 os.path 模塊時,推薦使用字符串 (Unicode) 表示文件名或者路徑。

由于某些 Unix 操作系統(tǒng)不支持 Unicode 字符串,所以需要使用字節(jié)對象;而在 Windows 操作系統(tǒng)中,則推薦所有的應(yīng)用程序都使用字符串對象來訪問文件。

os 模塊和它的子模塊 os.path 都屬于內(nèi)置模塊,不需要安裝,直接導(dǎo)入即可使用。

在 Python 程序中,使用 import 語句導(dǎo)入 os 模塊后,既可以使用 os 模塊提供的屬性和方法,又可以使用 os.path 模塊提供的屬性和方法。

導(dǎo)入os 模塊的代碼如下:

import os  # 說明:導(dǎo)入 os 模塊后,也可以使用其子模塊 os.path。

如果在程序中,只涉及到 os.path 模塊的內(nèi)容,也可以直接導(dǎo)入 os.path,代碼如下:

import os.path

使用上面的代碼導(dǎo)入 os.path 模塊后,就可以使用該模塊提供的屬性和方法了。如果不確定該模塊都提供了哪些屬性和方法,可以使用 Python 的內(nèi)置函數(shù) dir() 獲取其全部方法列表,代碼如下:

import os.path  # 操作路徑的模塊
print(dir(os.path))

程序運行結(jié)果如下:

在這里插入圖片描述

二、常用方法

2.1 exists()方法

判斷路徑是否存在(準確)

exists() 方法用于判斷路徑(文件或目錄)是否存在,如果存在則返回 True ;不存在則返回 False。如果是斷開的符號鏈接,也返回 False。

語法格式如下:

os.path.exists(path)

參數(shù)說明:

  • path:表示要判斷的路徑,可以采用絕對路徑,也可以采用相對路徑。
  • 返回值:如果給定的路徑存在,則返回 True,否則返回 False。

注意:在使用 exists() 方法時,如果某些平臺未授予 os.stat() 對所請求文件有執(zhí)行的權(quán)限,即使路徑真實存在,使用該方法也會返回 False。

使用 exists() 方法判斷保存在 E:\Code\lesson 目錄下的 main.py 文件是否存在,代碼如下:

import os.path  # 操作路徑的模塊
path = r"E:\Code\lesson\main.py"  # 文件
if os.path.exists(path):  # 判斷文件是否存在
    # E:\Code\lesson\main.py 文件存在
    print(path, "文件存在")
else:
    print(path, "文件不存在")

用 exists() 方法判斷 E:\Code\lesson1 目錄是否存在,代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 操作路徑的模塊
path = r"E:\Code\lesson1"  # 目錄
print(os.path.exists(path))  # False
if os.path.exists(path):  # 判斷目錄是否存在
    print(path, "目錄存在")
else:
    # E:\Code\lesson1 目錄不存在
    print(path, "目錄不存在")

2.2 isdir()方法

判斷是否為目錄

isdir() 方法用于判斷指定的路徑是否為目錄。語法格式如下:

os.path.isdir(path)

參數(shù)說明:

  • path:表示要判斷的路徑,可以采用絕對路徑,也可以采用相對路徑。
  • 返回值:如果給定的路徑是目錄,則返回 True,否則返回 False。

向 isdir() 方法中傳入絕對路徑,判斷該路徑是否為目錄,代碼如下:

import os.path  # 導(dǎo)入os.path模塊
print(os.path.isdir(r'E:/Code/lesson/main.py'))  # 判斷是否為目錄 False
print(os.path.isdir(r'E:/Code/lesson/'))  # 判斷是否為目錄 True

獲取指定目錄下的全部子目錄,首先應(yīng)用 os.listdir() 方法獲取指定路徑下的目錄和文件列表,然后遍歷該列表,并且將各路徑進行連接;再判斷是否為目錄,如果為目錄,則添加到指定列表;最后打印該列表,代碼如下:

import os  # 文件與操作系統(tǒng)相關(guān)模塊
root = r'E:/Code/lesson'
path = os.listdir(root)  # 獲取指定路徑下的目錄和文件列表
list_dir = []  # 路徑列表
for item in path:  # 遍歷獲取到的目錄和文件列表
    p = os.path.join(root, item)  # 連接目錄
    if os.path.isdir(p):  # 判斷是否為目錄
        list_dir.append(p)
print(f'目錄:{list_dir}')  # 打印目錄列表

程序運行結(jié)果如下:

目錄:['E:/Code/lesson\\.idea', 'E:/Code/lesson\\python-package']

2.3 isabs()方法

判斷是否為絕對路徑

isabs() 方法用于判斷路徑是否為絕對路徑。語法格式如下:

os.path.isabs(path)

參數(shù)說明:

  • path:表示要判斷的路徑,可以采用絕對路徑,也可以采用相對路徑。
  • 返回值:如果給定的路徑是絕對路徑,則返回 True,否則返回 False。

說明:在 Unix 系統(tǒng)中,將以斜杠開頭的路徑視為絕對路徑;而在 Windows 系統(tǒng)中,以去除驅(qū)動器號后的(反向) 斜線開頭的視為絕對路徑。

使用 isabs() 方法分別判斷兩個文件的路徑是否為絕對路徑,如果不是絕對路徑,則轉(zhuǎn)換為絕對路徑并輸出,代碼如下:

import os.path  # 操作路徑的模塊
path_list = [r'python-package/task1.py', r'E:\Code\lesson\python-package\demo',
             r'E:\Code\lesson\main.py']
for path in path_list:  # 遍歷目錄列表
    if not os.path.isabs(path):  # 如果不是絕對路徑
        path = os.path.abspath(path)  # 轉(zhuǎn)換為絕對路徑
        print(path)  # 打印各個路徑

2.4 isf?ile()方法

判斷是否為普通文件

isfile() 方法用于判斷是否為普通文件。語法格式如下:

os.path.isfile(path)

參數(shù)說明:

  • path:表示要判斷的路徑,可以采用絕對路徑,也可以采用相對路徑。
  • 返回值:如果給定的路徑對應(yīng)的文件是普通文件,則返回 True,否則返回 False。

示例代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
print(os.path.isfile(r'E:\Code\lesson\main.py'))  # 判斷是否為普通文件 True
# 說明:如果指定的文件不存在,則返回False。
print(os.path.isfile(r'E:\Code\lesson\main2.py'))  # False
path = r'E:\Code\lesson'  # 目錄
filename = 'main.py'  # 文件名
# 連接目錄和文件名時,不推薦使用字符串拼接方法實現(xiàn),
# 推薦使用 os.path.join()方法實現(xiàn),具體用法文本后續(xù)小節(jié)會詳細講解
print(os.path.isfile(os.path.join(path, filename)))  # 判斷是否為普通文件 True

2.5 join()方法

拼接路徑

join() 方法用于將兩個或者多個路徑拼接到一起組成一個新的路徑。語法格式如下:

os.path.join(path, *paths)

參數(shù)說明:

  • path:表示要拼接的文件路徑。
  • *paths:表示要拼接的多個文件路徑,這些路徑間使用逗號進行分隔。如果在要拼接的路徑中,沒有一個絕對路徑,那么最后拼接出來的將是一個相對路徑。
  • 返回值:拼接后的路徑。

說明:使用 os.path.join() 函數(shù)拼接路徑時,并不會檢測該路徑是否真實存在。

示例代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
print(os.path.join(r"E:\Code\lesson", "main.py"))  # 拼接字符串
# 如果要拼接的路徑中,存在多個絕對路徑,那么按從左到右順序,以最后一次出現(xiàn)的絕對路徑為準,
# 并且該路徑之前的參數(shù)都將被忽略,代碼如下:
# C:/demo
print(os.path.join('E:/Code', 'E:/Code/lesson', 'Code', 'C:/', 'demo'))  # 拼接字符串

2.6 abspath()方法

獲取絕對路徑

abspath() 方法用于返回文件或者目錄的絕對路徑。語法格式如下:

os.path.abspath(path)

參數(shù)說明:

  • path:表示要獲取絕對路徑的相對路徑,可以是文件也可以是目錄。
  • 返回值:返回獲取到的絕對路徑。

說明:絕對路徑是指在使用文件時指定文件的實際路徑。它不依賴于當前工作目錄。

注意:abspath() 方法在獲取實際路徑時,并不會檢查路徑是否真實存在,只是把當前文件目錄與 abspath() 方法給定的路徑進行拼接。

示例代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
# E:\Code\lesson\python-package\demo4_os_path.py
print(os.path.abspath(r'demo4_os_path.py'))  # 打印絕對路徑
# 使用abspath() 方法獲取當前Python 文件的絕對路徑,代碼如下:
print(os.path.abspath(os.path.basename(__file__)))
print(os.path.abspath(__file__))

2.7 basename()方法

從一個路徑中提取文件名

basename() 方法用于從一個路徑中提取文件名。當指定的路徑是一個不包括文件名的路徑(如 E:\Code\lesson\) 時,返回空字符串。語法格式如下:

os.path.basename(path)

參數(shù)說明:

  • path:表示要提取文件名的路徑。
  • 返回值:返回提取后的文件名。

示例代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
# message.txt
print(os.path.basename(r"demo\message.txt"))  # 打印文件名message.txt
path1 = 'e:/demo/test.txt'
path2 = 'e:/demo'
path3 = r'E:/Code/lesson/'
print(os.path.basename(path1))  # test.txt
print(os.path.basename(path2))  # demo
# 如果path 以/或 \ 結(jié)尾,那么就會返回空值
print(os.path.basename(path3))  # ""

2.8 dirname()方法

獲取路徑中的目錄

dirname() 方法用于從一個路徑中提取目錄。它相當于使用 os.path.split() 方法分割路徑后,得到的第一個元素。語法格式如下:

os.path.dirname(path)

參數(shù)說明:

  • path:表示要提取目錄的路徑。
  • 返回值:返回提取后的目錄。

示例代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
print(os.path.dirname(r"E:\Code\lesson\python-package\demo\message.txt"))
print(os.path.dirname(r"demo/message.txt"))

2.9 split()方法

分割路徑名

split() 方法用于從一個路徑中分割出目錄和文件名。語法格式如下:

os.path.split(path)

參數(shù)說明:

  • path:表示要分割的路徑,可以采用絕對路徑,也可以采用相對路徑。
  • 返回值:返回一個元組,與 (os.path.dirname()、os.path.basename()) 返回的元組相同。如果指定的是一個相對路徑,并且以斜杠結(jié)尾,則返回的元組的第二個元素為空。

使用 split() 方法從絕對路徑中分割出盤符、各個文件夾名和文件名,示例代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
lesson_path = r'E:/Code/lesson'  # 代碼的路徑
folders = []
drive, path_and_file = os.path.splitdrive(lesson_path)  # 分割驅(qū)動器和目錄
folders.append(drive[0])  # 獲取驅(qū)動器中的盤符
path, file = os.path.split(path_and_file)  # 分割路徑和文件名
if path != '':  # 處理路徑
    for i in path.split('/'):  # 將路徑按/分隔
        if i != '':
            folders.append(i)
if file != '':  # 處理文件名
    folders.append(file)
print(folders)  # 打印分隔結(jié)果

2.10 splitext()方法

分割文件名和擴展名

splitext() 方法用于從一個路徑中分割基本文件名和擴展名。語法格式如下:

os.path.splitext(path)

參數(shù)說明:

path:表示要分割的路徑,可以采用絕對路徑,也可以采用相對路徑。

返回值:返回一個元組,它的第一個元素為字符串表示的基本文件名(路徑中除擴展名以外的部分),第二個元素為字符串表示的擴展名(包括 . 號)。如果指定的路徑中不包括擴展名,則返回元組的第二個元素為空字符串。

示例代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
print(os.path.splitext(r'E:/amo/test/pdf/list.docx'))  # 分割絕對路徑
print(os.path.splitext(r'E:/amo/test/pdf/'))  # 分割沒有文件名的絕對路徑
print(os.path.splitext(r'amo/mot_cn.txt'))  # 分割相對路徑
word_path = r'E:/amo/test/pdf/list.docx'  # Word文檔的路徑
split_path = os.path.splitext(word_path)  # 分割Word文檔的路徑
pdf_path = split_path[0] + '.pdf'  # 組合PDF文檔的路徑
print(f'生成的PDF文檔路徑:{pdf_path}')

2.11 supports_unicode_f?ilenames 屬性

標記文件系統(tǒng)是否支持 Unicode 文件名

supports_unicode_filenames 屬性用于標記當前的文件系統(tǒng)是否支持 Unicode 文件名。語法格式如下:

os.path.supports_unicode_filenames

參數(shù)說明:

  • 返回值:如果文件系統(tǒng)支持 Unicode 文件名,則返回值為 True。

使用 supports_unicode_filenames 屬性判斷當前系統(tǒng)是否支持 Unicode 文件名。如果支持則創(chuàng)建 座右銘.txt 文件,否則創(chuàng)建 mot.txt 文件,代碼如下:

# -*- coding: utf-8 -*-
# @Time    : 2022-07-04 0:15
# @Author  : AmoXiang
# @File    : demo4_os_path.py
# @Software: PyCharm
# @Blog    : https://blog.csdn.net/xw1680
import os.path  # 導(dǎo)入os.path模塊
filename = ''  # 保存文件名的變量
print(os.path.supports_unicode_filenames)  # True
if os.path.supports_unicode_filenames:  # 判斷是否支持Unicode文件名
    filename = r'座右銘.txt'
else:
    filename = r'mot.txt'
open(filename, 'w')  # 創(chuàng)建或打開文件
# 文件名為: 座右銘.txt
print('文件名為:', filename)  # 打印文件名

到此這篇關(guān)于Python常用基礎(chǔ)模塊之os.path模塊詳解的文章就介紹到這了,更多相關(guān)Python的os.path模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python3調(diào)用ansible?api使用實例例說明

    python3調(diào)用ansible?api使用實例例說明

    這篇文章主要為大家介紹了python3?調(diào)用ansible?api使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • python線程池的實現(xiàn)實例

    python線程池的實現(xiàn)實例

    這篇文章主要介紹了python線程池的實現(xiàn)方法,代碼簡單實用,供大家參考使用
    2013-11-11
  • python中正則表達式的使用詳解

    python中正則表達式的使用詳解

    這篇文章主要介紹了python中正則表達式的使用詳解,另附上一些常用的Python正則例子,有需要的朋友可以參考下
    2014-10-10
  • 詳解Python如何巧妙實現(xiàn)數(shù)學(xué)階乘n!

    詳解Python如何巧妙實現(xiàn)數(shù)學(xué)階乘n!

    一個正整數(shù)的階乘(factorial)是所有小于及等于該數(shù)的正整數(shù)的積,并且0的階乘為1。自然數(shù)n的階乘寫作n!,本文就給大家介紹如何使用python和第三方庫來實現(xiàn)數(shù)學(xué)運算中的階乘以及階乘累計求和
    2023-03-03
  • 在python3中實現(xiàn)更新界面

    在python3中實現(xiàn)更新界面

    今天小編就為大家分享一篇在python3中實現(xiàn)更新界面,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python語言實現(xiàn)百度語音識別API的使用實例

    Python語言實現(xiàn)百度語音識別API的使用實例

    這篇文章主要介紹了Python語言實現(xiàn)百度語音識別API的使用實例,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Django實現(xiàn)一對多表模型的跨表查詢方法

    Django實現(xiàn)一對多表模型的跨表查詢方法

    今天小編就為大家分享一篇Django實現(xiàn)一對多表模型的跨表查詢方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • Python連續(xù)賦值需要注意的一些問題

    Python連續(xù)賦值需要注意的一些問題

    這篇文章主要介紹了Python連續(xù)賦值需要注意的一些問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 僅利用30行Python代碼來展示X算法

    僅利用30行Python代碼來展示X算法

    這篇文章主要介紹了僅利用30行Python代碼來展示X算法,同時還有對算法實現(xiàn)的復(fù)雜度的說明,需要的朋友可以參考下
    2015-04-04
  • 使用python繪制愛心效果代碼實例

    使用python繪制愛心效果代碼實例

    本文介紹了如何使用Python的Turtle模塊繪制一個紅色的愛心圖形,示例代碼通過定義draw_love函數(shù),利用Turtle的移動和轉(zhuǎn)向功能,實現(xiàn)了愛心輪廓的繪制,并填充紅色,這種方法適用于簡單的圖形繪制,并可視化展示結(jié)果,需要的朋友可以參考下
    2024-09-09

最新評論