在Windows中如何获取其他驱动器的os.getcwd()
根据 这个链接
“在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()切换回去