如何在Python中刷新networking驱动器映射

我有一个驱动器已经映射到一个指定的字母,'R:\'。 如果我运行python脚本访问这个空间,而login或解锁计算机,它工作正常。 当我设置任务计划程序来在早上运行脚本之前,我进来基本上我保持login和locking机器,但在某些时候,它看起来像我的networking驱动器映射超时(但重新连接,当我解锁在早上的机器),这就是为什么脚本无法find它们。

尝试执行os.path.exists()以检查此驱动器上的文件夹并创build它们(如果它们不存在),会出现错误。 从“try / except”循环中,我得到exception“系统找不到指定的path:'R:\'。

我的问题:有没有办法通过python强制刷新? 我已经看到关于映射networking驱动器的其他post…但不知道这是否适用于我的情况,因为我已经映射了驱动器。 它使用的字母需要保持不变,因为不同的应用程序有绝对的引用。 想知道如果映射相同的驱动器会导致问题或不工作,但也不想临时映射到另一个字母的脚本,并完成取消映射…似乎是一个低效率的方式来做到这一点?

使用Python 2.6(另一个程序需要)。

谢谢,

最好的解决方案是通过UNC路径名来引用“驱动器”,即形式为\\hostname\sharename的路径,但不幸的是,Python的基础库对处理UNC路径的支持很差。

选项#1将找到一个Python扩展模块,您可以安装以获得更好的支持UNC路径。 试试Google搜索“python unc”。

选项#2将使用Python 子进程模块执行net use命令,并解析结果输出。 例如从DOS提示符下,运行net use会输出这样的内容…

 Status Local Remote Network ------------------------------------------------------------------------------- OK R: \\hostname\sharename Microsoft Windows Network 

…你可以使用它来判断驱动器是否已经被映射,如果没有,你可以执行net use R: \\hostname\sharename来映射它。 如果没有参数调用net use可能足够'刷新'映射,如果它已经'超时',但我不确定。

选项#3将调查使用Python的ctypes模块直接调用底层的Windows库来模拟调用net use的功能。

我对这个问题的解决方案是只使用引用的机器的IP地址。 工作像一个魅力和映射驱动器没有问题…感谢您的答复。