python 之 Pathlib 模块 (一)
在最近的苏州项目中,涉及了较多的文件处理。而在大多数人处理文件时,还是用的 OS 模块。
>>> path.rsplit('\\', maxsplit=1)[0]
或者写出下面这样长长的代码
>>> os.path.isfile(os.path.join(os.path.expanduser('~'), 'realpython.txt'))
这里使用 pathlib 模块,可以使代码使用优雅,可读和 Pythonic 代码重写上面的两个示例,如:
>>> path.parent
>>> (pathlib.Path.home() / 'realpython.txt').is_file()
Python 文件路径处理问题
一般情况,Python 使用常规文本字符串表示文件路径。 一般在使用 os,glob 和 shutil 等库的时候会使用到路径拼接的操作,使用 os 模块拼接起来显得略显复杂,以下示例仅需要三个 import 语句来将所有文本文件移动到归档目录:
import glob
import os
import shutil
for file_name in glob.glob('*.txt'):
new_path = os.path.join('archive', file_name)
shutil.move(file_name, new_path)
使用常规的字符串去拼接路径是可以的,但是由于不同的操作系统使用的分隔符不同,这样就容易出现问题,所以一般我们使用最多的还是使用 os.path.join()。
创建路径
from pathlib import Path
你真正需要知道的是 pathlib.Path 类。 创建路径有几种不同的方式。 首先,有类方法,如.cwd(当前工作目录)和.home(用户的主目录):
from pathlib import Path
now_path = Path.cwd()
home_path = Path.home()
print("当前工作目录",now_path,type(now_path))
print("home目录",home_path,type(home_path))
输出内容:
当前工作目录 /Users/chennan/pythonproject/demo <class 'pathlib.PosixPath'>
home目录 /Users/chennan <class 'pathlib.PosixPath'>
可以发现路径格式为 pathlib.PosixPath 这是在 unix 系统下的显示。在不同的系统上显示的格式也是不一样,在 windows 系统会显示为 WindowsPath。但是不管什么显示类型,都不影响后面的操作。
前面我们提到过可以通过把字符串类型的路径,转换为 Pathlib.Path 类型的路径,经过测试发现在 Python3.4 以后很多模块以及支持该格式的路径。不用转为成字符串使用了。
使用方法如下:
import pathlib
DIR_PATH = pathlib.Path("/Users/chennan/CDM")
print(DIR_PATH,type(DIR_PATH))
输出内容:
/Users/chennan/CDM <class 'pathlib.PosixPath'>
比起 os.path.join 拼接路径的方式,pathlib 使用起来更加的方便, 使用示例如下:
import pathlib
DIR_PATH = pathlib.Path("/Users/chennan/CDM") / "2000"
print(DIR_PATH,type(DIR_PATH))
输出:
/Users/chennan/CDM/2000 <class 'pathlib.PosixPath'>
通过 “/” 我们就可以对路径进行拼接了.
催更
赞。
催更
优秀