python3--Linux檔案自動更新小程式,

來源:互聯網
上載者:User

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     #pass110 111 def restart_server():112     pass113 114 def main():115     #update_flag用於表示檔案是否已經更新過116     update_flag = True117     #vision_flag用於表示是否顯示函數裡的列印語句118     vision_flag = True119 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             pass150     151     #開始迴圈,更新程式主程式152     while True:153 154         os.system('clear')155         print("****************  更新程式  v1.01   *****************")156         #字型列印顏色變更文法:\033[1;33;40m %s \033[0m157         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 = False177                 input("")178                 continue179             elif update_usr_input == "2":180                 do_backup_file()181                 input("")182                 continue183             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                 continue199             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()

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.