Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要了解pathlib中当前工作目录的帮助吗_Python_Directory_Pathlib_Cwd - Fatal编程技术网

Python 需要了解pathlib中当前工作目录的帮助吗

Python 需要了解pathlib中当前工作目录的帮助吗,python,directory,pathlib,cwd,Python,Directory,Pathlib,Cwd,我正在用Python学习pathlib 我创建了一个脚本printcwd.py: from pathlib import Path mypath = Path() print (mypath.cwd()) 如果我在任何文件夹中双击python脚本,就会得到预期的结果——它会将该文件夹的路径打印为cwd 但是,如果我在VSCode(或powershell)中的终端中运行脚本,它将始终将cwd作为终端的当前目录设置为什么,而不是printcwd.py文件的位置 比如说,, 如果我将文件放在C:

我正在用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,它将运行以下命令:

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

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


那么,这里发生了什么呢?

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


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

谢谢。假设您想要创建一个脚本,该脚本在与脚本相同的目录中创建了一组文件夹。为了确保总是发生这种情况,您是否会编写
os.chdir(Path(\uu file\uu).parent)
以确保cwd始终与文件位置相同?我不会这样做。我只想将文件夹创建为
路径(\uuu file\uuu).parent
的子文件夹。根本不改变CWD。例如,创建一个常量
BASE\u DIR
,然后使用
BASE\u DIR/'a'
为名为
a
的文件夹创建路径对象。确定,如
BASE\u DIR=Path(uuu文件)。parent
?是。这就是我的意思。谢谢。你能详细解释一下为什么你认为修改cwd不是一个好的做法吗?