需要一些帮助来理解 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 创建的模块魔术变量来指向放置文件的位置。
我正在 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 创建的模块魔术变量来指向放置文件的位置。