“CD”显然是 Windows 中的“动态”环境变量。从 python 内部,它不会出现在 os.environ 字典中;使用 os.getenv() 查询时也不会到达。有没有办法从 python 内部访问这个环境变量?
在人们告诉我使用 os.getcwd() 之前,请理解 os.getcwd() 不遵循软链接。在 linux 和 mac 上,我可以访问 PWD 环境变量来获取当前目录,包括软链接目录。如果可能的话,我也希望在 Windows 上做类似的事情。
谢谢。
“CD”显然是 Windows 中的“动态”环境变量。从 python 内部,它不会出现在 os.environ 字典中;使用 os.getenv() 查询时也不会到达。有没有办法从 python 内部访问这个环境变量?
在人们告诉我使用 os.getcwd() 之前,请理解 os.getcwd() 不遵循软链接。在 linux 和 mac 上,我可以访问 PWD 环境变量来获取当前目录,包括软链接目录。如果可能的话,我也希望在 Windows 上做类似的事情。
谢谢。
Windows 上进程的工作目录不是环境变量。它通过调用 Win32 API 函数来读取GetCurrentDirectory
。在 Python 中,由os.getcwd()
.
Windows 上没有名为CD
. 命令解释器cmd.exe
确实创建了一个名为 的环境变量的错觉CD
,但它是私有的cmd.exe
。由于您的代码在 Python 可执行文件中运行,因此这无关紧要。请注意,当您执行 中的set
命令时cmd.exe
,没有CD
列出任何变量。
很容易验证我说的是真的。编写一个简单的 C 程序,调用GetEnvironmentVariable
pass "CD"
。你会看到没有这样的变量。
即使您碰巧能够侵入cmd.exe
启动可执行文件的进程,Python
这对您有什么好处。您的 Python 进程有一个不同于cmd.exe
. 谁说你的 Python 进程是从 开始的cmd.exe
?
我不太确定你的困惑在哪里,但是在 Python 中获取工作目录的方法是调用os.getcwd()
. 然后,如果您想解析符号链接,则必须自己解决。