在Windows中如何获取其他驱动器的os.getcwd()

12 投票
3 回答
11974 浏览
提问于 2025-04-16 21:02

根据 这个链接

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

这让我在Windows上使用 os.getcwd() 时遇到了一些麻烦。

我在C盘上使用Python 2.7来运行一个位于共享网络驱动器F:上的脚本。但是,从这个脚本中调用 os.getcwd() 时,它返回的是C盘上的一个目录。

有没有什么办法可以获取F盘的工作目录呢?

3 个回答

-1

我觉得你正在阅读的那部分表述得不太好。你的Python会话中只有一个当前工作目录,你可以通过os.getcwd()来获取这个目录。如果你想切换到F盘,可以使用os.chdir(r'F:\')

那段引用提到的部分是关于os.path.join这个方法的。它的意思是,如果你传入第一个参数是'C:'而不是r'C:\',你会得到一个错误的路径(也就是C:path而不是C:\\path)。

2

这说法是不对的。每个进程只有一个工作目录。不同的驱动器没有单独的工作目录。

如果想了解更多历史背景,可以看看这篇文章,作者是雷蒙德·陈。

6

其实,这个问题的答案要看情况:

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

--> import os
--> os.getcwd()
'c:\\source\\dbf-dev'
--> os.chdir('z:')
--> os.getcwd()
'Z:\\'
--> os.chdir('c:')    # assumes root directory
--> os.getcwd()
'C:\\'

但是,如果你是通过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()切换回去

撰写回答