从python内部查询窗口“CD”动态env var

时间:2013-04-30 15:29:29

标签: python windows environment-variables

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

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

感谢。

1 个答案:

答案 0 :(得分:0)

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

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

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

即使您确实能够入侵启动cmd.exe可执行文件的Python进程,但它对您有什么好处。您的Python进程有一个与cmd.exe不同的工作目录。谁说您的Python流程甚至是从cmd.exe开始的?

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