Python 中的路径

Paths in Python

Posted by J Leaves on November 8, 2020

如何在 Python 中像 HTML 和 C 那样使用简单的 ../../path/to/file 来表示相对位置呢?

Pathlib 内置库

使用 Python 3.4 起自带的 Pathlib 库,可以跨平台 (Unix/Windows)表示相对位置。

假设我们的文件树如下:

1
2
3
4
5
6
.
├── assets
│   └── moto.txt
└── path
    └── to
        └── file.txt

简单的相对路径

若我们处于根目录下。我们想访问 file.txt ,只需:

1
2
3
4
from pathlib import Path
path1 = Path('path', 'to', 'file.txt')
path2 = Path('path')/'to'/'file.txt'
path3 = Path('path/to/file.txt')

以上 3 种方法等效,其中第 3 种最简单。

用下面的代码可验证,在 Linux 和 Windows 下均可正常读取文件。

1
2
3
4
5
6
import os
os.getcwd()
from pathlib import Path
path = Path('path/to/file.txt')
with open(path) as f:
    print(f.readlines())

包含上一级的相对路径

若我们处于 path 目录下。我们想访问 moto.txt ,只需:

1
2
3
4
from pathlib import Path
path1 = Path('..', 'assets', 'moto.txt')
path2 = Path('..')/'assets'/'moto.txt'
path3 = Path('../assets/moto.txt')

以上 3 种方法等效,其中第 3 种最简单。

用下面的代码可验证,在 Linux 和 Windows 下均可正常读取文件。

1
2
3
4
5
6
import os
os.getcwd()
from pathlib import Path
path = Path('../assets/moto.txt')
with open(path) as f:
    print(f.readlines())