MyException - 我的异常网
当前位置:我的异常网» Linux/Unix » python3-Linux文件自动更新小程序

python3-Linux文件自动更新小程序

www.MyException.Cn  网友分享于:2013-10-27  浏览:0次
python3--Linux文件自动更新小程序
  1 #!/usr/bin/python3
  2 #coding = utf-8
  3 
  4 #author = warlock921
  5 
  6 import os
  7 import sys
  8 import time
  9 import paramiko
 10 
 11 ServerDir=''
 12 ServerUpdateFileDir = 'UpdateFile'
 13 ServerBakDir = "BackupFile"
 14 
 15 if os.name == 'posix':
 16         ServerDir = "你需要更新的文件根目录"
 17 elif os.name == 'nt':
 18         ServerDir = "你需要更新的文件根目录"
 19         os.sep = '/'
 20 
 21 def print_point():
 22 
 23     for i in range(100):
 24         percent = 1.0*i/100*100
 25         print('完成进度:\033[1;31m %.2s %s \033[0m'%(str(percent),'%'),end='\r')
 26         time.sleep(0.08)
 27 
 28 
 29 def get_foward_dir():
 30     return os.getcwd()
 31 
 32 #用于读取更新文档目录的方法
 33 def read_update_dir(vision_flag):
 34     dirlist = []
 35     path_file_list1 = {}
 36     path_file_list2 = {}
 37 
 38     #定义需要更新的目录及文件列表
 39     #使用os.walk()函数实现遍历当前路径下的所有目录结构,输出为列表,列表值为tuple(元组)
 40     for i in os.walk("."):
 41         #print(dirlist)
 42         #将非空的目录及非顶层的目录保存到列表中
 43         if i[-1] != [] and i[0] != ".":
 44             dirlist.append(i)
 45             #print(dirlist)
 46     if dirlist == []:
 47         if vision_flag :
 48             print("\033[1;31m 注意: \033[0mUpdateFile文件夹下不存在可更新文件!按回车键退出!")
 49         #print(dirlist)
 50         input("")
 51         exit()
 52 
 53     dirlist_length = len(dirlist)
 54     #print(dirlist_length)
 55     list_num = 0
 56     #使用循环取出需要更新的目录路径及文件名称列表
 57     while list_num < dirlist_length:
 58 
 59         update_dir = dirlist[list_num][0][1::]
 60         
 61         if vision_flag:
 62             print('-'*50)
 63             print("需要更新的目录%d:\033[4;31m %s \033[0m"%((list_num+1),(ServerDir+update_dir+os.sep)))
 64 
 65         update_file = dirlist[list_num][-1]
 66         if vision_flag:
 67             print("需要更新的文件列表%d:%s"%((list_num+1),update_file))
 68         list_num+=1
 69         #这里使用了Python3中字典的特性,将每次循环取出来的字典,再update进一个新的字典,这样才能在字典中保存另一个字典
 70         path_file_list2.update(path_file_list1.fromkeys(update_file,(ServerDir+update_dir+os.sep)))
 71     return path_file_list2
 72 
 73 #用于显示已更新过的文档目录
 74 def read_updated_dir():
 75     dirlist2 = []
 76     for j in os.walk("."):
 77         if j[-1] != [] and j[0] != ".":
 78             dirlist2.append(j)
 79             #print(dirlist2)
 80     dirlist2_length = len(dirlist2)
 81     #print(dirlist_length)
 82     list_num2 = 0
 83     while list_num2 < dirlist2_length:
 84         update_dir2 = dirlist2[list_num2][0][1::]
 85         print('-'*50)
 86         print("已更新的目录%d:\033[1;33m %s \033[0m"%((list_num2+1),(ServerDir+update_dir2)))
 87         update_file2 = dirlist2[list_num2][-1]
 88         print("已更新的文件列表%d:\033[1;31m %s \033[0m"%((list_num2+1),update_file2))
 89         list_num2+=1
 90 
 91 
 92 def read_bak_dir():
 93     pass
 94 
 95 def do_update_file():
 96     vision_flag = False
 97     path_file_list=read_update_dir(vision_flag)
 98     #pfl_len=len(path_file_list)
 99     #遍历字典path_file_list,取出其中的key,value用于显示和更新
100     for path_file,path_dir in path_file_list.items():
101         print(" 已更新:%s \033[1;33m %s \033[0m"%(("..."+path_dir[13::]),path_file))
102         time.sleep(0.5)
103 
104 def do_backup_file():
105     print_point()
106     print("\033[1;33m 备份服务器文件完成! \033[0m")
107 
108 #def into_server_need2update_file(need_update_path,need_update_file):
109     #pass
110 
111 def restart_server():
112     pass
113 
114 def main():
115     #update_flag用于表示文件是否已经更新过
116     update_flag = True
117     #vision_flag用于表示是否显示函数里的打印语句
118     vision_flag = True
119 
120     list_x = []
121 
122     #定义当前目录路径
123     forward_dir = get_foward_dir()
124 
125     #循环遍历当前文件夹,并将当前目录下的文件夹(不包括文件)压入列表
126     for x in os.listdir():
127         if os.path.isdir(x):
128             list_x.append(x)
129 
130     #判断是否存在UpdateFile文件
131     if ServerUpdateFileDir in list_x:
132         #print("命中\033[1;31m %s \033[0m文件夹!"%ServerUpdateFileDir)
133         #操作更换工作目录,进入需要更新的文件夹
134         os.chdir(("."+os.sep+ServerUpdateFileDir))
135     else:
136         #如果不存在UpdateFile文件,则让用户选择是否建立该文件夹
137         print("\033[1;31m UpdateFile文件夹不存在,请先建立UpdateFile文件夹,否则无法更新! \033[0m")
138         mkdir_input=input("是否建立UpdateFile文件夹?(y/n):")
139         if mkdir_input == 'y' or mkdir_input == 'Y':
140             os.system('mkdir UpdateFile')
141             print("已经建立UpdateFile文件夹!")
142             os.chdir(("."+os.sep+ServerUpdateFileDir))
143             input('')
144         elif mkdir_input == 'n' or mkdir_input == 'N':
145             print("不建立UpdateFile文件夹,无法进行更新,系统退出!")
146             input('')
147             exit()
148         else:
149             pass
150     
151     #开始循环,更新程序主程序
152     while True:
153 
154         os.system('clear')
155         print("****************  更新程序  v1.01   *****************")
156         #字体打印颜色变更语法:\033[1;33;40m %s \033[0m
157         print("命中\033[1;31m %s \033[0m文件夹!"%ServerUpdateFileDir)
158         print(("当前工作目录:\033[1;33;40m %s \033[0m")%forward_dir)
159         print("当前工作的文件夹:%s"%get_foward_dir())
160 
161         #判断是否已经更新过
162         if update_flag:
163             #未更新则执行下面语句
164             read_update_dir(vision_flag)
165             print('*'*50)
166             update_usr_input = input("\033[1;31m 注意 \033[0m是否开始更新文件:\n 1.开始更新 \n 2.不更新只备份文件 \n 3.退出更新程序 \n 请选择(数字键1/2/3,默认3):")
167             if update_usr_input == "1":
168                 print("\033[1;31m 开始更新,请勿进行其他操作... \033[0m")
169                 
170                 #先备份
171                 do_backup_file()
172                 #后更新
173                 do_update_file()
174 
175                 print("更新成功完成!")
176                 update_flag = False
177                 input("")
178                 continue
179             elif update_usr_input == "2":
180                 do_backup_file()
181                 input("")
182                 continue
183             elif update_usr_input == "3":
184                 os.system('clear')
185                 print("系统退出!")
186                 exit()
187             else:
188                 os.system('clear')
189                 print("系统退出!")
190                 exit()
191         else:
192             #已更新过则执行下面的代码
193             print('*'*50)
194             update_usr_input = input("\033[1;31m 注意: \033[0m网站已经更新完成:\n 1.查看更新过的目录 \n 2.退出更新程序 \n 请选择(数字键1/2,默认2):")
195             if update_usr_input == "1":
196                 read_updated_dir()
197                 input("")
198                 continue
199             elif update_usr_input == "2":
200                 os.system('clear')
201                 print("系统退出!")
202                 exit()
203             else:
204                 os.system('clear')
205                 print("系统退出!")
206                 exit()
207 
208 
209 if __name__ == '__main__':
210     main()

 

文章评论

做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
10个调试和排错的小建议
10个调试和排错的小建议
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
漫画:程序员的工作
漫画:程序员的工作
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
我是如何打败拖延症的
我是如何打败拖延症的
每天工作4小时的程序员
每天工作4小时的程序员
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
我的丈夫是个程序员
我的丈夫是个程序员
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
中美印日四国程序员比较
中美印日四国程序员比较
程序员应该关注的一些事儿
程序员应该关注的一些事儿
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员和编码员之间的区别
程序员和编码员之间的区别
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
Java程序员必看电影
Java程序员必看电影
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
为什么程序员都是夜猫子
为什么程序员都是夜猫子
如何成为一名黑客
如何成为一名黑客
程序员都该阅读的书
程序员都该阅读的书
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
旅行,写作,编程
旅行,写作,编程
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
代码女神横空出世
代码女神横空出世
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
编程语言是女人
编程语言是女人
 程序员的样子
程序员的样子
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
鲜为人知的编程真相
鲜为人知的编程真相
程序员必看的十大电影
程序员必看的十大电影
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
老程序员的下场
老程序员的下场
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有