焦點(diǎn)!Python對(duì)單個(gè)多個(gè)win機(jī)器磁盤、共享文件夾操作
解決在win機(jī)器22,445端口無(wú)法訪問(wèn)的前提下: 連接多個(gè)win機(jī)器磁盤映射或者訪問(wèn)共享文件夾問(wèn)題
(資料圖片)
方法一:直接套用如下腳本
導(dǎo)入os和subprocess模塊。
1.使用subprocess.run執(zhí)行net use命令查看該映射是否存在。
2.如果存在,則使用subprocess.run執(zhí)行net use /delete命令斷開(kāi)該映射。
3.如果不存在,則執(zhí)行net use命令映射該磁盤。
4.如果需要用戶名密碼,則要求用戶輸入,然后使用subprocess.run執(zhí)行net use命令映射該磁盤。
import osimport subprocess# 定義待檢查的磁盤映射列表drive_mappings = [ {"drive": "X:", "path": "\\\\127.0..0.1\\shared", "user": "", "password": ""}, {"drive": "Y:", "path": "\\\\127.0..0.2\\shared", "user": "username", "password": None}, {"drive": "Z:", "path": "\\\\127.0..0.3\\shared", "user": "", "password": ""}]# 遍歷映射列表,對(duì)每個(gè)映射進(jìn)行檢查和斷開(kāi)操作for mapping in drive_mappings: # 執(zhí)行net use命令查看該映射是否存在 result = subprocess.run(["net", "use", mapping["drive"]], capture_output=True) # 如果存在,則執(zhí)行net use /delete命令斷開(kāi)該映射, 如果gbk打印結(jié)果有問(wèn)題,建議用cp850 if "OK" in result.stdout.decode("gbk"): os.system(f"net use {mapping["drive"]} /delete /yes")print(f"斷開(kāi)映射 {mapping["drive"]}") # 如果不存在,則執(zhí)行net use命令映射該磁盤 else: # 判斷是否需要輸入用戶名密碼 if mapping["user"]: password = input(f"請(qǐng)輸入 {mapping["drive"]} 的密碼:") if password: mapping["password"] = password else: print("密碼不能為空!") continue # 執(zhí)行net use命令映射磁盤 if mapping["password"] is not None: print(f"映射 {mapping["drive"]}") os.system(f"net use {mapping["drive"]} {mapping["path"]} /user:{mapping["user"]} {mapping["password"]}") else: print(f"映射 {mapping["drive"]}") os.system(f"net use {mapping["drive"]} {mapping["path"]}")
在這個(gè)示例中,每個(gè)映射都被表示成一個(gè)包含映射驅(qū)動(dòng)器,網(wǎng)絡(luò)共享路徑,用戶名和密碼的字典。在遍歷映射列表時(shí),我們首先使用subprocess.run執(zhí)行net use命令來(lái)檢查是否存在映射。如果映射存在,我們使用os.system執(zhí)行net use /delete命令來(lái)斷開(kāi)該映射。如果映射不存在,我們首先檢查映射是否需要用戶名和密碼。如果需要,我們提示用戶輸入密碼,然后再使用os.system執(zhí)行net use命令來(lái)映射磁盤。如果不需要密碼,則直接使用os.system映射磁盤。
方法二:調(diào)用封裝函數(shù)
將腳本實(shí)現(xiàn)封裝后,只需要在MapDisk.yaml文件中寫用例即可,此后執(zhí)行Map_disk.py腳本即可實(shí)現(xiàn)win磁盤的一些映射操作
目錄介紹:
腳本附上:
yaml填寫需要映射的磁盤 和 共享路徑即可 用戶名密碼有則填寫,無(wú)則忽略
MapDisk.yaml 填寫用例
MapDisk: - dirver_disk: "W:" map_path: \\127.0.0.1\d$ user: password: - dirver_disk: "E:" map_path: \\127.0.0.2\d$ user: uatadmin password: Uat@yybp5.11215
PublicConfig.py腳本: 配置讀取信息,方便調(diào)用
import osfrom Public_Utils.util_yaml import YamlReaderclass YamlPath: def __init__(self): current = os.path.abspath(__file__) self.base_dir = os.path.dirname(os.path.dirname(current)) def get_disk_yaml_file(self): _config_path = self.base_dir + os.sep + "Public_Config\Public_yaml" self._config_file = _config_path + os.sep + "MapDisk.yaml" return self._config_file def get_win_yaml_file(self): _config_path = self.base_dir + os.sep + "Public_Config\Public_yaml" self._config_file = _config_path + os.sep + "Mapwins.yaml" return self._config_fileclass ConfigYaml: def __init__(self): #初始yaml讀取配置文件 self.disk_config = YamlReader(YamlPath().get_disk_yaml_file()).yaml_data() self.win_config = YamlReader(YamlPath().get_win_yaml_file()).yaml_data() def get_dirver_disk(self): return self.disk_config["MapDisk"] def get_win_yaml(self): return self.win_configif __name__ == "__main__": #print(ConfigYaml().get_win_yaml()) pass
Map_disk.py 用例執(zhí)行腳本
class MAPPing: #定義檢查映射磁盤的列表 # ConfigYaml().get_dirver_disk() def Maps_disk(self): #遍歷映射列表,對(duì)每個(gè)映射進(jìn)行檢查和斷開(kāi)操作 for map_didk in ConfigYaml().get_dirver_disk(): if map_didk["dirver_disk"] in subprocess.check_output("net use",shell=True).decode("cp850"): #執(zhí)行net use命令查看映射是否存在 -cp850 os.system("net use %s /del /y" % map_didk["dirver_disk"]) # 刪除映射盤 if map_didk["user"] == None or map_didk["password"] ==None: os.system(f"net use {map_didk["dirver_disk"]} {map_didk["map_path"]}") print(f"成功映射驅(qū)動(dòng)器{map_didk["dirver_disk"]} {map_didk["map_path"]}") else: os.system(f"net use {map_didk["dirver_disk"]} {map_didk["map_path"]} /user:{map_didk["user"]} {map_didk["password"]}") print(f"成功映射驅(qū)動(dòng)器{map_didk["dirver_disk"]} {map_didk["map_path"]}")if __name__ == "__main__": pass
util_yaml.py
class YamlReader: #初始化,判斷文件是否存在 def __init__(self,yaml_file): if os.path.exists(yaml_file): self.yaml_file = yaml_file else: raise FileNotFoundError("yaml文件不存在") self._data = None self._data_all = None def yaml_data(self): #yaml文件讀取 --單個(gè)文檔讀取 #第一次調(diào)用data,讀取yaml文檔,如果不是,直接返回之前保存的數(shù)據(jù) if not self._data: with open(self.yaml_file,"rb") as f: self._data = yaml.safe_load(f) return self._data def yaml_data_all(self): #多個(gè)文檔的讀取 if not self._data_all: with open(self.yaml_file,"rb") as f: self._data_all = yaml.safe_load_all(f) return self._data_all
關(guān)鍵詞:
- 個(gè)人護(hù)理小家電市場(chǎng)結(jié)構(gòu)迎變局 新興渠道規(guī)模不容小覷
- 廣州科技活動(dòng)周進(jìn)入預(yù)熱 明日正式啟動(dòng)300多場(chǎng)主題活動(dòng)接踵而來(lái)
- 深化重點(diǎn)領(lǐng)域信用建設(shè) 廣州正式出臺(tái)新型監(jiān)管機(jī)制實(shí)施方案
- 女童不慎掉入20米深井 18歲小姨三次下井成功營(yíng)救
- 西安3個(gè)區(qū)域12月28日起每日開(kāi)展全員核酸 官方提倡民眾居家健身
- 浙江樂(lè)清一核酸檢測(cè)結(jié)果異常人員 復(fù)采復(fù)檢為陰性
- 浙江本輪疫情報(bào)告確診病例490例 提倡“雙節(jié)”非必要不出省
- 西安警方通報(bào)6起涉疫違法案件
- 西安新一輪核酸篩查日檢測(cè)能力達(dá)160萬(wàn)管
- 西安市累計(jì)報(bào)告本土確診病例811例
-
樂(lè)平京東代運(yùn)營(yíng)_提升電商銷售的有效途徑
隨著電商行業(yè)的快速發(fā)展,越來(lái)越多的企業(yè)開(kāi)始進(jìn)入電商領(lǐng)域。然而,電商
-
卡盟刷鉆是什么原理_卡盟刷鉆
1、首先如果你不知道卡鉆代碼就去找卡盟如果知道的話就別找卡盟了自己
-
松陽(yáng)縣氣象臺(tái)發(fā)布雷電黃色預(yù)警【Ⅲ級(jí)/較重】【2023-06-11】_天天日?qǐng)?bào)
松陽(yáng)縣氣象臺(tái)2023年06月11日18時(shí)35分發(fā)布雷電黃色預(yù)警信號(hào):受對(duì)流云團(tuán)
-
詐騙罪量刑標(biāo)準(zhǔn)的司法解釋
《最高人民法院、最高人民檢察院關(guān)于辦理詐騙刑事案件具體應(yīng)用法律若干
-
天天視點(diǎn)!廣匯汽車與工行江西省分行簽署戰(zhàn)略合作協(xié)議
6月9日,廣匯汽車與工商銀行江西省分行簽署戰(zhàn)略合作協(xié)議。廣匯汽車副總
-
當(dāng)前時(shí)訊:河池365_hc365
1、按照國(guó)家的勞動(dòng)法,你們是有假放的。2、但是有一些地方還不能放,特
-
2023高考今日落幕,多地公布志愿填報(bào)時(shí)間 速訊
10日,2023全國(guó)高考將全部落幕,目前,全國(guó)多地陸續(xù)公布志愿填報(bào)時(shí)間。
-
2023高考今日落幕,多地公布志愿填報(bào)時(shí)間|天天新動(dòng)態(tài)
10日,2023全國(guó)高考將全部落幕,目前,全國(guó)多地陸續(xù)公布志愿填報(bào)時(shí)間。
-
錦龍股份再拋定增計(jì)劃,公司實(shí)控人楊志茂擬以現(xiàn)金全額認(rèn)購(gòu)2.64億股|天天播資訊
錦龍股份的定增計(jì)劃又迎來(lái)新變化。6月9日晚,錦龍股份發(fā)布了第九屆監(jiān)事
-
光線傳媒王長(zhǎng)田:AI有可能讓動(dòng)畫電影制作效率提升30%-全球熱推薦
上證報(bào)中國(guó)證券網(wǎng)訊(記者楊翔菲)6月10日上午,第二十五屆上海國(guó)際電
X 關(guān)閉
每日速讀!王欣瑜與謝淑薇“新海峽組合”法網(wǎng)女雙奪冠,成大滿貫首冠
2022年度“武漢最美退役軍人”候選人名單公布|今日快訊
X 關(guān)閉
西安警方完成研考安保工作 共出動(dòng)警力逾1.3萬(wàn)人次
得知西安疫情防控“升級(jí)” 男子夜騎共享單車回咸陽(yáng)淳化
中國(guó)醫(yī)生將任SIU主席背后:從追隨者同行者到引領(lǐng)者
海南省通報(bào)政法隊(duì)伍教育整頓成果