需要一些帮助来理解 pathlib 中的当前工作目录

Need some help understanding current working directory in pathlib

我正在 Python 学习 pathlib。

我创建了一个脚本,printcwd.py:

from pathlib import Path

mypath = Path()

print (mypath.cwd())

如果我在任何文件夹内双击 运行 python 脚本,这将给我预期的结果 - 它会将该文件夹的路径打印为 cwd。

但是,如果我 运行 在 VSCode(或在 powershell 中)我的终端中的脚本,它总是会给我 cwd 作为终端当前目录设置的任何内容,而不是比 printcwd.py 文件的位置。

例如, 如果我将文件放在 C:\ 和 运行 中,它将 C:\ 打印为 cwd().

但是,如果我 运行 它在 VSCode 中,终端设置为 C:\Otherfolder,它会 运行 this:

PS C:\Otherfolder> & C:/Users/name/AppData/Local/Programs/Python/Python39/python.exe C:/printpath.py

并打印:C:\Otherfolder,尽管 .py 文件存在于 C:\

那么,这里发生了什么?

CWD 是终端的 属性,而不是 python 进程。当您双击该文件时,Windows 在目录中创建一个终端并运行该文件。 cwd 函数只是访问这个 属性.

如果要获取文件所在的目录,请使用Path(__file__).parent。此访问使用 python 创建的模块魔术变量来指向放置文件的位置。