-1

“CD”显然是 Windows 中的“动态”环境变量。从 python 内部,它不会出现在 os.environ 字典中;使用 os.getenv() 查询时也不会到达。有没有办法从 python 内部访问这个环境变量?

在人们告诉我使用 os.getcwd() 之前,请理解 os.getcwd() 不遵循软链接。在 linux 和 mac 上,我可以访问 PWD 环境变量来获取当前目录,包括软链接目录。如果可能的话,我也希望在 Windows 上做类似的事情。

谢谢。

4

1 回答 1

0

Windows 上进程的工作目录不是环境变量。它通过调用 Win32 API 函数来读取GetCurrentDirectory。在 Python 中,由os.getcwd().

Windows 上没有名为CD. 命令解释器cmd.exe确实创建了一个名为 的环境变量的错觉CD,但它是私有的cmd.exe。由于您的代码在 Python 可执行文件中运行,因此这无关紧要。请注意,当您执行 中的set命令时cmd.exe,没有CD列出任何变量。

很容易验证我说的是真的。编写一个简单的 C 程序,调用GetEnvironmentVariablepass "CD"。你会看到没有这样的变量。

即使您碰巧能够侵入cmd.exe启动可执行文件的进程,Python这对您有什么好处。您的 Python 进程有一个不同于cmd.exe. 谁说你的 Python 进程是从 开始的cmd.exe

我不太确定你的困惑在哪里,但是在 Python 中获取工作目录的方法是调用os.getcwd(). 然后,如果您想解析符号链接,则必须自己解决。

于 2013-04-30T15:33:13.657 回答