我正在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>amp;C:/Users/name/AppData/Local/Programs/Python/Python39/Python.exeC:/printpath.py
并打印:C:\Otherfolder,尽管C:\中存在.py文件
那么,这里发生了什么?
CWD是终端的属性,而不是python进程的属性。双击该文件时,Windows会在目录中创建一个终端并运行该文件。cwd
函数只访问此属性。
如果要获取文件所在的目录,请使用Path(__file__).parent
。这种访问使用python创建的模块魔术变量来指向文件的放置位置。