📜  加入 pathlib 路径 - Python (1)

📅  最后修改于: 2023-12-03 15:07:17.743000             🧑  作者: Mango

加入 pathlib 路径 - Python

在Python中,路径操作是一个常见的操作。在Python 3.4及以上版本中,我们可以使用pathlib模块来更加简单地操作路径。在本文中,我们将介绍如何使用pathlib模块来加入路径。

导入 pathlib 库

首先,我们需要导入 pathlib 库。使用下面的代码来导入 pathlib 库:

from pathlib import Path
通过 joinpath() 方法添加路径

pathlib.Path 类已经带有了 joinpath() 方法,该方法可以将多个子路径连接起来,形成一个完整路径。例如,如果您有两个子文件夹“src”和“test”,可以使用 joinpath() 方法将它们合并为一个完整的路径。如下:

p = Path(".")
my_path = p.joinpath("src", "test")
print(my_path)

输出结果为:

./src/test

需要注意的是,第一个参数可以是任何与 Path 相容的对象,包括字符串类型或 Path 对象。

通过 / 运算符添加路径

pathlib.Path 类也支持 / 运算符,以更简洁的方式连接路径。例如,我们可以使用类似于下面的方法来加入路径:

p = Path(".")
my_path = p / "src" / "test"
print(my_path)

输出结果为:

./src/test

需要注意的是,在路径中,你可以使用相对路径(默认情况下,您可以将点作为当前目录的表示)或绝对路径。

使用 resolve() 方法获取最终路径

使用以上的方法,只是连接了路径,并没有进行路径合法性和转义。如果需要获取最终的规范化路径,可以使用 resolve() 方法。例如,我们可以使用下面的方式获取绝对路径:

p = Path(".")
my_path = p / "src" / "test"
print(my_path.resolve())

输出结果为:

/home/username/project/src/test

需要注意的是,resolve() 方法试图将链接(如符号链接或快捷方式)转换为它们的目标路径,并使路径更规范化。

使用 Path 对象的属性获取路径

除了以上的方法,还可以使用 Path 对象的一些属性来获取路径,例如,您可以使用类似下面的方法获取目前运行文件的绝对路径:

p = Path(__file__).resolve().parent
print(p)

输出结果为:

/home/username/project/src

需要注意的是,__file__ 变量是当前脚本的文件名,parent 属性将返回父目录的路径。

揭示性示例

下面是一个完整的示例,展示了如何使用 pathlib 为项目构造合适的目录结构:

from pathlib import Path

# 获取当前项目路径
project_directory = Path(".").resolve()

# 创建 src 和 test 目录
src_directory = project_directory.joinpath("src")
test_directory = project_directory.joinpath("test")

src_directory.mkdir()
test_directory.mkdir()

# 在 src 目录下创建 main.py 文件
main_file = src_directory.joinpath("main.py")

with open(main_file, "w") as f:
    f.write("print(\"Hello, World!\")")

# 在 test 目录下创建 test_main.py 文件
test_file = test_directory.joinpath("test_main.py")

with open(test_file, "w") as f:
    f.write("def test_main():\n    assert True")

print(f"Project directory: {project_directory}")
print(f"Source directory: {src_directory}")
print(f"Test directory: {test_directory}")
print(f"Main file: {main_file}")
print(f"Test file: {test_file}")

输出结果:

Project directory: /home/username/project
Source directory: /home/username/project/src
Test directory: /home/username/project/test
Main file: /home/username/project/src/main.py
Test file: /home/username/project/test/test_main.py

以上示例代码在项目目录下创建了 src 目录和 test 目录,并在 src 目录下创建了 main.py 文件,在 test 目录下创建了 test_main.py 文件。该代码显示了如何使用 Path 类的各种方法来构造目录结构,并能够正确地揭示出每个文件和目录在文件系统上的位置。

结论

在本文中,我们介绍了使用 pathlib 模块来拆分、拼接、规范化和解析路径的方法。这是使用 Python 处理文件和目录的一种更好的方式,正如本文所示,pathlib 模块使用极其简单且易于理解。