0

我正在用 Python 学习 pathlib。

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

from pathlib import Path

mypath = Path()

print (mypath.cwd())

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

但是,如果我在 VSCode(或 powershell)中的终端中运行脚本,它将始终为我提供 cwd,无论终端的当前目录设置为什么,而不是 printcwd.py 文件的位置。

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

但是,如果我在终端设置为 C:\Otherfolder 的情况下在 VSCode 中运行它,它将运行:

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

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

那么,这里发生了什么?

4

1 回答 1

1

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

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

于 2020-12-14T12:49:45.243 回答