简单的学习了几天的python,总觉得最好根据自身的需求来做点小工具实战一下。
上班的时候由于有很多目录需要打开。每次都要一个个的找那些目录。
我觉得,我需要一个小工具。然后登记下,所有需要打开的目录。然后可以很方便的一键打开所有的目录
或者是有哪些文件。然后登记一下。可以一次性打开所有登记的目标
每次打开工具时,需要读取xml的数据。每增加一条数据要写入到xml中。
这样我们即使部使用辅助工具去添加记录。直接修改xml文件的数据来增加记录也是可以的。
具体实现如下
import os
import xml.dom.minidom as xmldom
datas={}
savepath="./manager.xml"
def main():
loadXml(savepath)
while(True):
print("目录快捷管理程序")
result= input("1、显示目录数据 2、添加新的管理目录 3、清屏 4、启动管理 0、打开所有目录:")
if result=="1":
for key in datas.keys():
print(key,datas[key])
elif result=="2":
os.system("cls")
addData()
elif result == "3":
os.system("cls")
elif result == "4":
os.system("cls")
manager()
elif result == "0":
openAll()
os.system("cls")
else:
print("输入错误请重新输入.")
#从文件中load数据到内存
def loadXml(xmlPath):
root= xmldom.parse(xmlPath)
nodes=root.getElementsByTagName("node")
print("所有目录列表:")
for node in nodes:
key=node.getAttribute("name")
value=node.getAttribute("path")
datas[key]=value
print(key,value)
#保存内存数据到文件
def saveXml(xmlPath):
root=xmldom.Document()
nodes= root.createElement("pathData")
root.appendChild(nodes)
for key in datas:
node=root.createElement("node")
node.setAttribute("name",key)
node.setAttribute("path",datas[key])
nodes.appendChild(node)
with open(xmlPath,"wb+") as file:
saveStr=root.toprettyxml(indent='\t',encoding="utf-8")
print(saveStr)
file.write(saveStr)
#打开所有保存的目录
def openAll():
for key in datas:
data = datas[key]
if os.path.exists(data):
os.startfile(datas[key])
print(key, "启动成功")
else:
print(key, "不存在,启动失败.")
#添加新的路径模块
def addData():
while (True):
key = input("请输入别称(输入q退出):")
if key.lower() == 'q':
break;
value = input("请输入完整路径:")
if os.path.exists(value):
datas[key] = value
saveXml(savepath)
print("添加路径失败,路径不存在")
#启动管理的模块
def manager():
print("别称列表:")
for key in datas.keys():
print(key)
while True:
startName = input("请输入启动别称(all为全部启动,q退出到上一层):")
if startName.lower()=='q':
break;
if startName.lower()=='all':
openAll()
continue
data = datas.get(startName)
if data:
if os.path.exists(data):
os.startfile(data)
print("成功打开",startName)
else:
print(data, "路径不存在.")
if __name__=="__main__":
main()