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

    完!

  • 相关阅读:
    iPhone将NSString转换编码集为gb2312或者gbk的方法
    iOS下微信语音播放之切换听筒和扬声器的方法解决方案
    苹果开发者各地区联系电话
    iOS开发中,应用内直接跳转到Appstore
    高亮显示UILabel中的子串
    UML
    All Classic Bluetooth profile for iPhone
    智能穿戴设备移动APP端与外设数据传输协议功能模块CMD&ACK表
    Mac 使用技巧分享
    git branch管理小结
  • 原文地址:https://www.cnblogs.com/itech/p/1934473.html
Copyright © 2011-2022 走看看