开发者

os.getcwd() for a different drive in Windows

开发者 https://www.devze.com 2023-03-18 13:57 出处:网络
According to http://docs.python.org/library/os.path.html \"On Windows, there is a current directory for each drive\"

According to http://docs.python.org/library/os.path.html

"On Windows, there is a current directory for each drive"

This i开发者_如何学Gos giving me some trouble when I use os.getcwd() on Windows.

I am using Python 2.7 on my C drive to call a script located on the shared network drive F:. Yet, os.getcwd() from within this script is returning a directory on my C drive.

Is there anything I can do to get the working directory for my F drive?


Actually, it depends:

If Python is started directly (not going through cmd.exe), then yes, you only have the one current directory (it's like always specifying 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:\\'

But, if you start Python from cmd.exe, you get the historical perspective:

>>> 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:\\'

Undoubtedly this is an artifact of cmd.exe doing its thing behind the scenes.

To answer your original question, though -- the only way to find out the current directory on drive f: is

  • 1) to have started Python from cmd.exe
  • 2) os.chdir() to 'f:'
  • 3) os.getcwd()
  • 4) os.chdir() back (if desired)


This is factually incorrect. Each process has a single working directory. There is no separate working directory for different drives.

For a historical perspective, have a read of this article by Raymond Chen.


I believe that the section you are reading that from is worded poorly. There is only one current working directory for your python session, and you get it from os.getcwd(). You can use os.chdir(r'F:\') to change directories to your F drive.

The part that that quote is referencing is relating to the os.path.join method. It means that passing a first argument of 'C:' instead of r'C:\', you will get the incorrect path (namely C:path instead of C:\\path).

0

精彩评论

暂无评论...
验证码 换一张
取 消