“CD”在Windows中显然是一个“动态”环境变量。从python里面,它没有出现在os.environ字典中;当用os.getenv()查询时它也不会到达。有没有办法从python里面访问这个环境变量?
在人们告诉我使用os.getcwd()之前,请理解os.getcwd()不遵循软链接。在linux和mac上,我可以访问PWD环境变量来获取当前目录,包括软链接目录。如果可能的话,我也希望在Windows上做类似的事情。
感谢。
答案 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()
。然后,如果你想解决符号链接,你必须自己这样做。