目錄
1. 为什么需要pathlib
2. pathlib的使用
2.1 创建路径
2.2 读写文件
2.3 路径的属性
2.4 移动和删除文件
3. 操作系统的差异
附:pathlib和os的区别
首頁 後端開發 Python教學 如何使用Python的pathlib模組處理檔案路徑?

如何使用Python的pathlib模組處理檔案路徑?

Apr 21, 2023 pm 01:34 PM
python pathlib

    1. 为什么需要pathlib

    在pathlib出现之前, Python 的标准库os.path 支持操作文件路径, 使用字符串表示文件路径。

    In [1]: import os.path
     
    In [2]: os.path.abspath('test')
    Out[2]: 'C:\\Users\\Public\\Documents\\test'
    登入後複製

    如以上代码, abspath函数的返回是一个字符串. 如果想要获取父目录, 需要使用字符串的split方法

    In [3]: path = os.path.abspath('test')
     
    In [4]: path.rsplit('\\', maxsplit=1)[0]
    Out[4]: 'C:\\Users\\Public\\Documents'
     
    Out[5]: os.path.join(path, 'data.txt')
    Out[5]: 'C:\\Users\\Public\\Documents\\test\\data.txt'
    登入後複製

    但是路径并不只是一个字符串, 如果需要对文件进行操作, 需要结合使用多个标准库的功能, 如: 需要移动当前目录下的一些文件到备份目录, 需要使用 os, glob, 和 shutil 库.

    import glob
    import os
    import shutil
     
    for file_name in glob.glob('*.txt'):
        new_path = os.path.join('backup', file_name)
        print(new_path)
        shutil.move(file_name, new_path)
    登入後複製

    有了pathlib, 使得上述的问题变得更加轻松, pathlib 创建的Path对象, 可以直接通过正斜杠运算符 '/' 连接字符串生成新的对象.

    In [1]: import pathlib
     
    In [2]: path = pathlib.Path()
    In [3]: path
    Out[3]: WindowsPath('.')
     
    In [4]: path.absolute() / 'test' / 'data.txt'
    Out[4]: WindowsPath('C:/Users/Public/Documents/test/data.txt')
    登入後複製

    另外pathlib还提供了很多方便的功能, 下面来介绍一下pathlib的常用方法

    2. pathlib的使用

    2.1 创建路径

    前面用到了 pathlib.Path() 获取当前路径的方法, 也可以显示的传入路径字符串进行路径创建.支持相对路径和绝对路径字符串的传递

    In [5]: pathlib.Path('test')
    Out[5]: WindowsPath('test')
     
    In [6]: pathlib.Path('C:/Users/Public/Documents/test')
    Out[6]: WindowsPath('C:/Users/Public/Documents/test')
    登入後複製

    另外 Path类还提供了一些类方法来更方便的获取路径. 如 .cwd()(当前工作目录)和.home()(您用户的主目录)

    In [7]: pathlib.Path.cwd()
    Out[7]: WindowsPath('C:/Users/Public/Documents')
     
    In [8]: pathlib.Path.home()
    Out[8]: WindowsPath('C:/Users/wyy')
    登入後複製

    2.2 读写文件

    通常, Python中读写文件时使用内置的 open 函数, open函数支持 path对象为参数打开文件.

    In [7]: data_file = pathlib.Path.cwd() / 'data.txt'
     
    In [8]: with open(data_file, 'w') as f:
        ...:     f.write('testdata')
    登入後複製

    path对象 提供了 open() 方法, 可以作为等效替代

    In [9]: with data_file.open(mode='r') as f:
       ...:     print(f.read())
    testdata
    登入後複製

    对于简单的文件读写, pathlib 库中还提供了几个方便的方法

    • .read_text():以文本模式打开path对象, 并返回字符串数据。

    • .read_bytes():以二进制模式打开path对象, 并返回字节数据。

    • .write_text(): 以文本模式打开path对象, 并写入字符串数据。

    • .write_bytes():以二进制模式打开path对象, 并写入字节数据。

    In [10]: data_file.read_text()
    Out[10]: 'testdata'
     
    In [11]: data_file.write_text('aloha')
    Out[11]: 5
     
    In [12]: data_file.read_text()
    Out[12]: 'aloha'
    登入後複製

    2.3 路径的属性

    路径的不同部分可以方便地作为属性使用.

    • .name 文件名

    • .parent 当前文件或目录的父目录

    • .stem 不带后缀的文件名

    • .suffix 文件扩展名

    • .anchor 目录的锚点, (路径前的目录部分)

    In [13]: data_file
    Out[13]: WindowsPath('C:/Users/Public/Documents/data.txt')
     
    In [14]: data_file.name
    Out[14]: 'data.txt'
     
    In [15]: data_file.stem
    Out[15]: 'data'
     
    In [16]: data_file.suffix
    Out[16]: '.txt'
     
    In [17]: data_file.anchor
    Out[17]: 'C:\\'
     
    In [18]: data_file.parent
    Out[18]: WindowsPath('C:/Users/Public/Documents')
    登入後複製

    2.4 移动和删除文件

    要移动文件, 可以使用 .replace() 方法, 需要注意的是, 如果目的地址的文件已经存在, .replace() 将会覆盖它. 使用pathlib 实现要移动当前目录下的txt文件到备份目录代码如下.

    In [19]: cwd = pathlib.Path.cwd()
     
    In [20]: for p in cwd.glob('*.txt'):
        ...:     p.replace(p.parent/'backup'/p.name)
    登入後複製

    如果需要重命名文件或者拓展名, 可以使用 .with_name() 和 .with_suffix()

    In [21]: data_file
    Out[21]: WindowsPath('C:/Users/Public/Documents/data.txt')
     
    In [22]: data_file.with_name(data_file.stem+'01').with_suffix('.txt.bak')
    Out[22]: WindowsPath('C:/Users/Public/Documents/data01.txt.bak')
    登入後複製

    3. 操作系统的差异

    windows系统使用的文件路径分割符是 '/' linux和mac系统使用的文件路径分割符是 '\' .

    当我们示例化一个pathlib.Path对象时, 根据操作系统的不同, 返回的时是 一个 WindowsPath, 或一个 PosixPath 对象. 这个特性使得编写跨平台兼容的代码变得相当容易. 当然也可以显式的使用 pathlib.WindowsPath.cwd() 来创建 WindowsPath 对象.

    此外, pathlib还提供了提供纯计算操作而没有 I/O 的 纯路径对象. 各个路径的关系如下:

    如何使用Python的pathlib模組處理檔案路徑?

    在一些用例中纯路径很有用,例如:

    1. 如果你想要在 Unix 设备上操作 Windows 路径(或者相反)。你不应在 Unix 上实例化一个 WindowsPath,但是你可以实例化 PureWindowsPath。

    2. 你只想操作路径但不想实际访问操作系统。在这种情况下,实例化一个纯路径是有用的,因为它们没有任何访问操作系统的操作。

    附:pathlib和os的区别

    pathlib在不同操作系统之间切换非常简单

    os操作导入模块不统一。 有时候需要导入 os,有时候又需要导入 os.path,而pathlib统一from pathlib import *即可。

    os返回的类型通常是字符串,但是路径和字符串并不等价,所以用os的时候,操作路径时有时候需要引入其他类库来协助操作;Pathlib模块则是面向对象,处理起来更方便

    比如在windows中:二者找到当前目录的操作是这样的

    import os
    from pathlib import *
    Path.cwd(),os.getcwd()
    #(WindowsPath('C:/Users/16000'), 'C:\\Users\\16000')
    登入後複製

    在linux中,是这样的

    如何使用Python的pathlib模組處理檔案路徑?

    #

    以上是如何使用Python的pathlib模組處理檔案路徑?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    熱門話題

    Java教學
    1661
    14
    CakePHP 教程
    1417
    52
    Laravel 教程
    1311
    25
    PHP教程
    1261
    29
    C# 教程
    1234
    24
    PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

    PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

    在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

    PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

    PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

    PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

    Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

    Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

    sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

    在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

    vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

    在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

    visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

    VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

    notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

    在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

    See all articles