Problem with os.listdir and delay with unreachable network drives on Windows
Read Roberts
rroberts at adobe.com
Mon Dec 27 14:07:44 EST 2004
Thank you for your response - this was very helpful.
I find that 'win32net.NetGetUseInfo()' does not
deal with UNC names - it seems to require a drive
specification in the form of a single letter.
The following sequence worked well for me,
resulting in a much shorter 'hang time' for
unreachable network mapped drives than simply
calling gos.listdir()
# get list of logical drive strginsdrive strings
volumeList = win32api.GetLogicalDriveStrings().split("\000")[:-1]
# some time later...
# vol is an entry in the volumeList.
driveLetter= vol[0]
dirList = []
if win32file.DRIVE_REMOTE = win32file.GetDriveType(driveLetter):
try:
driveStatus = win32net.NetUseGetInfo(None, driveLetter, 3)
if driveStatus['status'] == 0:
dirList = os.listdir(vol)
else:
# tell user the selected drive is not available.
except pywinypes.error(e)
# tell user the selected drive is not available
# happens when drive letter is not one
# of the current logical drives
>From: Andrey Ivanov <ai2... at yandex.ru> - Find messages by this author
>
>Date: Thu, 23 Dec 2004 11:44:17 +0300
>
>Local: Thurs, Dec 23 2004 12:44 am
>
> Subject: Re: Problem with os.listdir and delay
>with unreachable network drives on Windows
>
>Reply | Reply to Author | Forward | Print |
>Individual Message | Show original | Report Abuse
>
>[Read Roberts]
>
>- Show quoted text -
>Maybe a win32net.WNetGetUniversalName() [expands drive to UNC name]
>and win32net.NetGetUseInfo() [returns various info on UNC name
>including status] will help you. I don't have a time to setup shares,
>so I can't guarantee that this approach will work as you expect. First
>function might raise an exception on disconnected devices, which you
>will need to handle. You might also need win32file.GetDriveType() to
>distinguish between remote and local drives.
>
>--
>Andrey
More information about the Python-list
mailing list