“查询窗口”;CD";python内部的动态环境变量

“查询窗口”;CD";python内部的动态环境变量,python,windows,environment-variables,Python,Windows,Environment Variables,“CD”显然是windows中的一个“动态”环境变量。在python内部,它不会出现在os.Enviro字典中;当使用os.getenv()查询时,它也不会到达。有没有从python内部访问此环境变量的方法 在别人告诉我使用os.getcwd()之前,请理解os.getcwd()不遵循软链接。在linux和mac上,我可以访问PWD环境变量以获取当前目录,包括软链接目录。如果可能的话,我也希望在windows上做类似的事情 谢谢。Windows上进程的工作目录不是环境变量。它是通过调用Win32

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

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


谢谢。

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

Windows上没有名为
CD
的标准环境变量。命令解释器
cmd.exe
确实创建了名为
CD
的环境变量的假象,但它是
cmd.exe
的私有变量。因为您的代码在Python可执行文件中运行,所以这与此无关。请注意,当您在
cmd.exe
中执行
set
命令时,没有列出
CD
变量

很容易证实我说的是真的。编写一个简单的C程序,调用
GetEnvironmentVariable
传递
“CD”
。您将看到没有这样的变量

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


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

FWIW,在
cmd.exe中执行
echo%CD%
会打印看似CWD的内容,但我猜它是内置在shell中的,不是一个真正的环境变量。@aya这是一个cmd.exe的特殊功能。@Mayur你在寻找更多信息吗?通过“软链接”您的意思是“符号链接”、“连接点”还是其他什么?
echo%CD%
显示的内容与我在
CD
命令中输入的内容没有任何不同,即使我指定的路径中有符号链接(例如
文档和设置
是指向
用户的符号链接)
cd
似乎根本不支持Windows快捷方式(
.lnk
文件)。你到底想在这里实现什么?@kindall嗯,在Vista上,
文档和设置
是一个NTFS连接点,与符号链接不同。前者在
dir
中显示为
,后者显示为
。但是我看不到
echo%CD%
的返回值与Python中运行
os.getcwd()
的返回值之间有任何区别。“软链接”-是的,“符号链接”。我们将linux文件服务器映射到windows机器上的特定驱动器。文件服务器在部署时将使用符号链接到目录结构。从反馈来看,CD听起来不像是windows版的PWD。@MayurPatel Linux?那完全不同。如果您正在通过SMB映射linux符号链接。。。好。。。这取决于你是怎么做的。你必须更具体地说明你的设置,以及你想要达到的目标。