[EMAIL PROTECTED] writes: > I'm currently using "os.listdir" to obtain the contents of some slow Windows > shares. I think I've seen another way of doing this using the win32 library > but I can't find the example anymore.
Do you want the list of files on the shares or the list of shares itself? If the files, you can use something like FindFiles, but I don't expect it to be that much faster just to obtain directory names (likely the overhead is on the network). If you just want a list of shares, you could use NetUseEnum, which should be pretty speedy. (FindFiles is wrapped by win32api, and NetUseEnum by win32net, both parts of the pywin32 package) Here's a short example of displaying equivalent output to the "net use" command: - - - - - - - - - - - - - - - - - - - - - - - - - import win32net status = {0 : 'Ok', 1 : 'Paused', 2 : 'Disconnected', 3 : 'Network Error', 4 : 'Connected', 5 : 'Reconnected'} resume = 0 while 1: (results, total, resume) = win32net.NetUseEnum(None, 1, resume) for use in results: print '%-15s %-5s %s' % (status.get(use['status'], 'Unknown'), use['local'], use['remote']) if not resume: break - - - - - - - - - - - - - - - - - - - - - - - - - Details on the the arguments to NetUseEnum can be found in MSDN (with any pywin32 specifics in the pywin32 documentation). > My main problem with using "os.listdir" is that it hangs my gui application. > The tread running the "os.listdir" appears to block all other threads when > it calls this function. Yes, for a GUI you need to keep your main GUI thread always responsive (e.g., don't do any blocking operations). There are a number of alternatives to handling a long processing task in a GUI application, dependent on both the operation and toolkit in use. For wxPython, http://wiki.wxpython.org/index.cgi/LongRunningTasks covers several of the options (and the theory behind them is generally portable to other toolkits although implementation will change). -- David -- http://mail.python.org/mailman/listinfo/python-list