> 백엔드 개발 > 파이썬 튜토리얼 > Python 파일 시스템 모듈 pathlib 라이브러리를 사용하는 방법

Python 파일 시스템 모듈 pathlib 라이브러리를 사용하는 방법

WBOY
풀어 주다: 2023-05-13 23:49:04
앞으로
1970명이 탐색했습니다.

1. pathlib 라이브러리의 공식 정의

pathlib는 Python 문서에 제공된 정의가 객체 지향 파일 시스템 경로입니다. pathlib는 다양한 운영 체제에 적용할 수 있는 의미 체계와 함께 파일 시스템 경로를 나타내는 클래스를 제공합니다.

경로 클래스는 I/O 없이 순수한 계산 작업을 제공하는 순수 경로와 순수 경로를 상속하지만 I/O 작업도 제공하는 구체적인 경로로 구분됩니다.

2. Pathlib cheats

1. 기본 사용법

  • Path.iterdir() # 해당 디렉토리의 하위 디렉토리나 파일을 탐색합니다.

  • Path.is_dir() # 디렉토리인지 확인

  • Path.glob() # 필터 디렉터리(생성기로 돌아가기)

  • Path.resolve() # 절대 경로 반환

  • Path.exists() # 경로가 존재하는지 확인 존재합니다

  • Path.open() # 파일 열기(지원)

  • unlink() # 파일 또는 디렉터리 삭제(디렉토리가 비어 있지 않으며 예외가 발생함)

2 . 기본 속성

  • Path.

    parts # 분할 경로는 os.path.split()과 유사하지만 튜플을 반환합니다.

  • Path.

    drive # 드라이브 이름을 반환

  • Path.

    root # 경로의 루트 디렉터리를 반환

  • Path.

    anchor # 드라이브로 돌아갈지 아니면 루트로 돌아갈지 자동으로 결정

  • Path.

    parents # 모든 상위 디렉터리 목록 반환

3. 경로 변경

  • Path.

    with_name () # 경로 이름 변경, 마지막 레벨 경로 이름 변경

  • Path.

    with_suffix() # 경로 접미사 변경

4 , the path

path.

  • joinpath () # 경로에 가입하십시오. PATHINATIAT.RELATIVE_TO

    () # 상대 경로 계산
  • 5, 테스트 경로

PATH.

MATCH

() # 경로가 패턴과 일치하는지 테스트합니다.
  • Path.is_dir

    () # 파일인가요?
  • Path.is_absolute

    () # 절대 경로인가요? .
  • is_reserved
  • () # 예약된 경로인가요? 실제로 존재합니까?

    6. 다른 방법
  • Path.cwd

    () # 현재 디렉터리의 경로 개체를 반환합니다
  • .home

    () # 현재 사용자의 홈 경로 객체를 반환합니다

Path.
    stat
  • () # os.stat()

    Path.
  • chmod
  • ()과 동일한 경로 정보를 반환합니다. os.chmod()

    Path.
  • expanduser
  • () # Expand~Return 전체 경로 객체

    Path.
  • mkdir
  • () # 디렉토리 생성

    Path.
  • rename과 유사한 경로 권한
  • () # 경로 이름 바꾸기

    Path.
  • rglob
  • () # 모든 하위 디렉터리의 파일을 재귀적으로 탐색

    3. os와 pathlib.Path의 차이점
  • os 모듈의 경로 방법과 비교하면, Python3 표준 라이브러리 pathlib 모듈의 경로 작업은 경로에서 작업하는 것이 더 간단합니다.

    1. 현재 파일 경로 가져오기

    os 모듈을 사용할 때 getcwd() 메서드를 통해 현재 파일 경로를 직접 가져올 수 있습니다.
  • Pycharm에서는 os를 사용할 수 있습니다. .path.dirname( __file__) Python은 Pycharm에서 제공하는 __file__ 개념을 제공하지 않기 때문에 현재 파일 경로를 가져옵니다.

    import os
    
    print(os.getcwd())  # C:\Users\bobin.yang\PycharmProjects\untitled
    print(os.path.dirname(__file__))  # C:/Users/bobin.yang/PycharmProjects/untitled
    로그인 후 복사
    pathlib 모듈에서는 Path를 사용할 수 있습니다. cwd() 메소드 현재 파일 경로를 직접 얻으려면 시도해 볼 수 있습니다:
    import pathlib
    
    print(pathlib.Path.cwd())  # C:\Users\bobin.yang\PycharmProjects\untitled
    로그인 후 복사

    Pycharm에서 단축키 ctrl+왼쪽 마우스 버튼을 사용하고 클릭하여 볼 수 있습니다. 이 방법에 대한 자세한 소개.
위 그림에서 볼 수 있듯이 cwd() 메서드는 os 라이브러리의 getcwd() 메서드를 캡슐화한 것일 뿐이지만 더 나빠 보입니다. 공식입니다. 의 출시는 확실히 허구가 아닙니다. 이제 그 비밀을 함께 공개하겠습니다.

2. 상위/상위 디렉토리 가져오기

위의 경우는 pashlib 라이브러리의 사용을 더 복잡하게 만드는 것 같습니다. 비밀을 밝히기 위해서는 pathlib 라이브러리의 구성을 함께 느끼고 pathlib가 어떻게 작동하는지 이해할 수 있습니다. 도서관은 우리에게 편리함을 가져다줍니다.

os 모듈에서 특정 파일의 상위 디렉터리를 가져오려면 os 모듈은 다음과 같이 작성됩니다.

import os

print(os.path.dirname(os.path.dirname(os.getcwd())))  # C:\PycharmProjects
로그인 후 복사
getcwd() 方法可以直接获取当前文件路径

在 Pycharm 中,可以使用 os.path.dirname(__file__) 获取当前文件路径,因为 Python 并没有提供 __file__ 这个概念,他是 Pycharm 提供的:

import pathlib

print(pathlib.Path.cwd().parent)   # C:\PycharmProjects
로그인 후 복사

在 pathlib 模块中,通过 Path.cwd() 方法可以直接获取当前文件路径,我们可以动手试一试:

import os

print(os.path.join(os.path.dirname(os.getcwd()), '路径拼接', '真麻烦'))  # C:\PycharmProjects\路径拼接\真麻烦
로그인 후 복사

通过 Pycharm 我们可以使用快捷键 ctrl+鼠标左键 点击查看该方法的详细介绍。

从上图中可以看出 cwd() 方法不过是对 os 库中 getcwd() 方法进行了封装,看起来好像更差劲了,但是官方的推出一定不是子虚乌有的,现在让我们一起来揭秘。

2、 获取上层/上层目录

上面那个案例仿佛让 pashlib 库的使用变得更加复杂了,为了揭秘,我们只能一同感受下 pathlib 库的构成,了解 pathlib 库如何带给我们便捷。

在 os 模块中,如果我们要获取某一个文件的父目录,os 模块的写法为:

# /Users/mac/test.py
import os

paths = ('路径拼接', '真麻烦')
print(pathlib.Path.cwd().parent.joinpath(*paths))  # C:\PycharmProjects\路径拼接\真麻烦
로그인 후 복사
로그인 후 복사

在 pathlib 库中,可以通过这样简洁方法实现:

import pathlib

print(pathlib.PurePath(__file__).match('*.py'))  # True
로그인 후 복사
로그인 후 복사

并且,如果你需要找他爷爷,是不是再来一个 .parent 就行了。相比较 os 模块的 os.path.dirname()pathlib 라이브러리에서는 다음과 같은 간단한 방법으로 달성할 수 있습니다.

import pathlib

os_path = os.path.dirname(__file__)
print(os_path)  # C:/PycharmProjects/untitled

pure_path = pathlib.PurePath(__file__)
print(pure_path)  # C:\PycharmProjects\untitled\run.py
print(type(pure_path))  # <class &#39;pathlib.PureWindowsPath&#39;>


print(pathlib.PurePath(__file__).match(&#39;*.py&#39;))  # True
로그인 후 복사
로그인 후 복사

그리고, if 그의 할아버지를 찾아야 하는데 .parent를 하나 더 추가하면 될까요? os 모듈의 os.path.dirname()과 비교하면 너무 편리한가요?

3. 경로 접합

상위 디렉터리에서 경로를 접합하려면 os 모듈을 통해 다음과 같은 긴 코드 문자열을 작성해야 할 수도 있습니다.

rrreee🎜pathlib를 사용할 때 그 편리함을 함께 경험해 보세요. 에! 🎜
# /Users/mac/test.py
import os

paths = (&#39;路径拼接&#39;, &#39;真麻烦&#39;)
print(pathlib.Path.cwd().parent.joinpath(*paths))  # C:\PycharmProjects\路径拼接\真麻烦
로그인 후 복사
로그인 후 복사

通过 pathlib 库拼接路径,你可以很方便的调节他在他祖辈的位置,妙哉。

4、 其他封装

pathlib 封装了很多的 os.path 中的方法,如下所示:

  • os.path.expanduser() --> pathlib.Path.home()

  • os.path.expanduser() --> pathlib.Path.expanduser()

  • os.stat() --> pathlib.Path.stat()

  • os.chmod() --> pathlib.Path.chmod()

四、pathlib.PurePath的使用

上一节的操作大部分都是通过 pathlib 库中的 Path 实现,其实他还有一个更加高大上的模块,也就是我们这一节的主角:pathlib.PurePath

PurePath 是一个纯路径对象,纯路径对象提供了实际上不访问文件系统的路径处理操作。

有三种方法可以访问这些类,我们也称之为 flavor 。

1、 PurePath.match

下面让我们来实现一个神奇的功能,判断当前的路径下是否有符合'*.py'规则的文件。

import pathlib

print(pathlib.PurePath(__file__).match(&#39;*.py&#39;))  # True
로그인 후 복사
로그인 후 복사

输出为什么会是 True 呢?因为当前文件夹下不就有一个 test.py 吗?

2、 PurePath的子类:PurePosixPath(非Windows系统)、PureWindowsPath

看见 pathlib.PurePath 后面跟着 match,那是不是能说明他是个对象,而不是一个单纯的路径字符串,因此我们可以试着打印 pathlib.PurePath 看一看。

import pathlib

os_path = os.path.dirname(__file__)
print(os_path)  # C:/PycharmProjects/untitled

pure_path = pathlib.PurePath(__file__)
print(pure_path)  # C:\PycharmProjects\untitled\run.py
print(type(pure_path))  # <class &#39;pathlib.PureWindowsPath&#39;>


print(pathlib.PurePath(__file__).match(&#39;*.py&#39;))  # True
로그인 후 복사
로그인 후 복사

通过打印 os.path 获取当前路径的结果,得到一个路径字符串;而通过 pathlib.PurePath 则获得了一个 PurePosixPath 对象,并且由此得到的路径包括了当前文件 run.py。

위 내용은 Python 파일 시스템 모듈 pathlib 라이브러리를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿