zoukankan      html  css  js  c++  java
  • python实例31[自动挂载虚拟盘]

    在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()

    完!

  • 相关阅读:
    给tkinter文本框添加右键菜单
    Python读取图片尺寸、图片格式
    sublime text 3 build 3143 安装详解
    一种使用pyinstaller时图标问题解决方案
    讠己 —— 冫欠 自 云力 扌仓 石马
    python桌面端开发手记(序列化、压缩包、加密、图形界面GUI)
    Spark安装过程纪录
    Zookeeper与HBse安装过程纪录
    搭建分布式Hadoop的填坑纪录
    使用几种常见分类器预测海难幸存者(二分类)
  • 原文地址:https://www.cnblogs.com/itech/p/1934473.html
Copyright © 2011-2022 走看看