在windows上使用subst和netuse


import os
import subprocess
  
def RunCommand(cmd):
  return subprocess.call(cmd)
  
def RunCommandWithOutput(cmd):
  p=subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
  (stdoutdata, stderrdata) = p.communicate()
  return p.returncode, stdoutdata, stderrdata
  
def SubstDriveToPath(drive, path):
  substcmd = "subst" + " " + drive + " " + path
  return RunCommandWithOutput(substcmd)
  
def UnSubstDriveToPath(drive):
  unsubstcmd = "subst" + " " +drive + " " + "/d"
  RunCommand(unsubstcmd)
  
def SubstDriveToPathF(drive, path):
  UnSubstDriveToPath(drive)
  UnNetuseDriveToPath(drive)
  return SubstDriveToPath(drive, path)

def NetuseDriveToPath(drive, path):
  netusecmd = "net use" + " " + drive + " " + path
  return RunCommandWithOutput(netusecmd)
  
def UnNetuseDriveToPath(drive):
  unnetusecmd = "net use" + " " + drive + " " + "/del"
  RunCommand(unnetusecmd)
  
def NetuseDriveToPathF(drive, path):
  UnSubstDriveToPath(drive)
  UnNetuseDriveToPath(drive)
  return NetuseDriveToPath(drive, path)
  
def AutoSubstorNetuse(path):
  successful = False
  
  if(not os.path.isdir(path) or not os.path.exists(path)):
    print("path is not existed or is not a directory")
    return successful
  
  netuse = False
  if(path.startswith("\\\\")):
    netuse = True
  
  useddrive = ""
  for drive in "ZYXWVUTSRQPONMLKJIHGFEDCBA":
    fulldrive = drive + ":"
    if(netuse):
      (returncode, outdata, errdata) = NetuseDriveToPath(fulldrive, path)
      if(returncode == 0):
        useddrive = fulldrive
        break
    else:
      (returncode,outdata,errdata) = SubstDriveToPath(fulldrive,path)
      if(returncode == 0):
        useddrive = fulldrive
        break
  if(not useddrive == ""):
    successful = True
    
  return successful, useddrive

(returncode, outdata, errdata) = SubstDriveToPathF("Y:", "C:\\test")
(returncode1, outdata1, errdata1) =  NetuseDriveToPathF("X:", "\\\\remotemachinenameorip\\shared")

(returncode, drive) = AutoSubstorNetuse("C:\\test")
(returncode, drive) = AutoSubstorNetuse("\\\\remotemachinenameorip\\shared")

强制挂载到某个虚拟盘:

SubstDriveToPathF()

NetuseDriveToPathF()

自动查找没有使用的盘来挂载:

AutoSubstorNetuse()

完!

转载于:https://www.cnblogs.com/itech/archive/2011/01/18/1934473.html

python实例31[自动挂载虚拟盘]相关推荐

  1. python实例31[My Stock Info]

    本程序使用python3.1实现的一个运行于Windows的控制台小程序,用来显示你所关心的股票的实时价格. 1)每隔一分钟跟新一次,当然你可以改为更短的时间间隔: 2)控制台彩色显示的python模 ...

  2. python实例31[解析buildlog]

    简单地解析VisualStudio的buildlog:(有的时候log文件太长,但是我们只是关心warning和error, 通过该程序可以直接得到所有的warning和error的行) import ...

  3. python实例31[文件夹清理]

    使用: foldercleanup.py -d 10 -k c:\test\keepfile.txt c:\test 表示对c:\test目录只保留最近10天的子文件夹和keepfile.txt中指定 ...

  4. python 在软件自己自动输入-Python模拟百度自动输入搜索功能的实例

    如下所示: # 访问百度,模拟自动输入搜索 # 代码中引入selenium版本为:3.4.3 # 通过Chrom浏览器访问发起请求 # Chrom版本:59 ,chromdriver:2.3 # 需要 ...

  5. udev udevadm介绍及linux设备重命名和自动挂载应用实例分析

    (一)UDEV介绍 udev在维基百科中的定义是:udev (userspace /dev) is a device manager for the Linux kernel. As the succ ...

  6. python实例豆瓣代码_Python实例:通过selenium模拟登陆豆瓣

    前几天写的<Python实例:分析豆瓣影片评论Ver 1.0版本>文章中,关于爬取数据过频繁导致IP被封禁的事情让我对豆瓣数据的爬取中断了.忽然想到之前有写过关于关于使用selenium库 ...

  7. jupyter分割代码块_科研分享—Python根据关键词自动抓取Pubmed文献标题(附全部代码)文末有福利...

    写在前面:接触Python应该是8月初的一篇公众号文章,大致内容是使用py爬取数据库并汇总到本地.正好手头需要对某个领域的文献进行调研,不妨学习一下. 什么是Python? 百度说:Python (计 ...

  8. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) 本博客仅为作者记录笔记之用,不免有很多细节不对之处. 还望各位看官能够见谅,欢迎批评指正. 博客虽水,然亦博主之苦劳也. 如需 ...

  9. Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点& ...

  10. [转载]Linux基础知识之挂载详解(mount,umount及开机自动挂载)

    挂载概念简述: 根文件系统之外的其他文件要想能够被访问,都必须通过"关联"至根文件系统上的某个目录来实现,此关联操作即为"挂载",此目录即为"挂载点& ...

最新文章

  1. 鹰式价差matlab,震荡市场中的蝶式价差交易
  2. 小谈 Java 单元测试
  3. Vysor_v1.6.9
  4. 机器学习实践:TensorFlow2 多GPU负载不均衡问题
  5. 网络摄像头实时获取信息
  6. springMVC从上传的Excel文件中读取数据
  7. Facebook广告账号主页创建时,其实还有这些小知识!
  8. 你遇到过最有诗意的句子是什么?
  9. 关于Excel中的F2键(知道了,会对Excel的操作非常方便)。
  10. 某台机器上IE8抛“Invalid procedure call or argument”异常
  11. kepware omronFINS
  12. ArcGIS Server 发布 REST 服务
  13. MFC 鼠标画线总结
  14. 忘记Windows服务器密码怎么办
  15. 基于51单片机的红外计数器proteus仿真 LCD1602显示原理图程序设计
  16. Java、两点间距离
  17. android 9 vxp 闪退,XPrivacyLua限制了权限的应用无法打开
  18. 【JAVA今法修真】 第四章 redis特性 击穿雪崩
  19. 微信小程序开发深入解读
  20. 关于订单支付成功后一些逻辑的处理

热门文章

  1. Nature:新发现挑战神经元作用传统理论 [转自科学网]
  2. 利用XMLHTTP无刷新添加数据之Post篇(转)
  3. 项目按jar包方式部署
  4. Dialog详解(包括进度条、PopupWindow、自定义view、自定义样式的对话框)
  5. jQuery实现清空table表格除首行外的所有数据
  6. 微博市值破百亿,真的只是恰巧赶上奥运了吗?
  7. iOS开发-类簇(Class Cluster)
  8. Jboss 安装配置
  9. UnitOfWork实战
  10. bat写的自动部署脚本