Python Windows中其他驱动器的os.getcwd()

Python Windows中其他驱动器的os.getcwd(),python,Python,据 在Windows上,每个驱动器都有一个当前目录 当我在Windows上使用os.getcwd()时,这给我带来了一些麻烦 我在C驱动器上使用Python 2.7调用位于共享网络驱动器F:上的脚本。然而,这个脚本中的os.getcwd()正在返回我的C驱动器上的目录 我能做些什么来获得我的F驱动器的工作目录吗?我相信你正在阅读的那一节的文字写得很糟糕。python会话只有一个当前工作目录,您可以从os.getcwd()获得它。您可以使用os.chdir(r'F:\')更改F驱动器的目录 该引号

在Windows上,每个驱动器都有一个当前目录

当我在Windows上使用
os.getcwd()
时,这给我带来了一些麻烦

我在C驱动器上使用Python 2.7调用位于共享网络驱动器F:上的脚本。然而,这个脚本中的
os.getcwd()
正在返回我的C驱动器上的目录


我能做些什么来获得我的F驱动器的工作目录吗?

我相信你正在阅读的那一节的文字写得很糟糕。python会话只有一个当前工作目录,您可以从
os.getcwd()
获得它。您可以使用
os.chdir(r'F:\')
更改F驱动器的目录


该引号引用的部分与
os.path.join
方法有关。这意味着传递第一个参数
'C:'
而不是
r'C:\'
,将得到不正确的路径(即
C:path
而不是
C:\\path
)。

这实际上是不正确的。每个进程都有一个工作目录。不同的驱动器没有单独的工作目录

从历史的角度来看,请阅读陈雷蒙的这篇文章。

事实上,这取决于:

如果直接启动Python(而不是通过cmd.exe),那么是的,您只有一个当前目录(就像总是指定cd/d…):

但是,如果从cmd.exe启动Python,您将获得历史透视图:

>>> import os
>>> os.getcwd()
'Z:\\perm-c'
>>> os.chdir('c:')    # does not assume root directory
>>> os.getcwd()
'C:\\Source\\Path'
>>> os.chdir('d:')
>>> os.getcwd()
'D:\\'
>>> os.chdir('l:')
>>> os.getcwd()
'L:\\'
>>> os.chdir('l:\\letter')
>>> os.getcwd()
'l:\\letter'
>>> os.chdir('z:')
>>> os.getcwd()
'Z:\\perm-c'
>>> os.chdir('l:\\')
>>> os.getcwd()
'l:\\'
毫无疑问,这是cmd.exe在幕后进行操作的产物

不过,要回答您最初的问题,找到驱动器f:上当前目录的唯一方法是

  • 1) 从cmd.exe启动Python
  • 2) 将os.chdir()改为“f:”
  • 3) os.getcwd()
  • 4) 返回os.chdir()(如果需要)

回顾过去,也许这不是正确的答案。。。我不确定有什么方法可以查看另一个驱动器的cwd。仅供参考,Python bug tracker中有一个活跃的讨论。知道为什么os.getcwd()可能会在C驱动器上返回某些内容吗?我使用的是Windows XP。这将是因为当您询问时,工作目录位于C上
>>> import os
>>> os.getcwd()
'Z:\\perm-c'
>>> os.chdir('c:')    # does not assume root directory
>>> os.getcwd()
'C:\\Source\\Path'
>>> os.chdir('d:')
>>> os.getcwd()
'D:\\'
>>> os.chdir('l:')
>>> os.getcwd()
'L:\\'
>>> os.chdir('l:\\letter')
>>> os.getcwd()
'l:\\letter'
>>> os.chdir('z:')
>>> os.getcwd()
'Z:\\perm-c'
>>> os.chdir('l:\\')
>>> os.getcwd()
'l:\\'