本来是想写一个东西可以直接调用TortoiseSVN保存当前代码到一个分枝下的。
可惜调用SVN的部分还在研究。就先写了目录拷贝的部分。
如果有喜欢研究Python的童鞋愿意提供想法或者建议的话,
这里先谢谢了。 :)
就目录拷贝的部分,思想很简单。读配置文件中的配置信息。
生成一个项目名称加日期时间组成的文件夹名为分枝名称。把当前项目下的全部内容
拷贝到这个目录下。
然后要做的研究就是调用TortoiseSVN命令嵌入这部分代码。
现在看代码:
1. 读取配置文件
配置文件很简单。用的就是txt文件。 格式类似于:
# root:/Users/lichallenger/test_src/ # project:test # destination:/Users/lichallenger/test_dst/
BTW: 我用的是Mac所以目录格式是这样的。如果你用的是Windows的话请适
当修改配置文件。
读文件就是最简单的了。直接用标准库的文件操作模块打开文件,读出全部的配置。一共就三行,所以
也不用考虑效率什么的了。
# open config file and read config information # author: bruce li class ConfigHandler(object): # def __init__(self,config_path): '''initializer''' self.config_path = config_path #read config infor def read_config(self): f = open(self.config_path) try: self.all_lines = f.readlines() except: raise else: f.close()
2. 拷贝目录和目录内容
拷贝目录用了shutil模块。里面有个方法可以直接把目录和目录下的全部内容拷贝到制定的其他目录。
这样就省得搞目录遍历之类的代码了。
# copy dir(s) & file(s) to configured path # author: bruce li import shutil class CopyHandler(object): # def __init__(self,src_path,dest_path): self.src_path = src_path self.dest_path = dest_path def move_content(self): try: shutil.copytree(self.src_path,self.dest_path) except: raise @staticmethod def move_src_content(src, dest): try: shutil.copytree(src_path,dest_path) except: raise
3. 综合调用
这里用了time模块获取当前时间,然后生成目标文件夹名称的一部分。
外界给python传的系统参数的第一个是文件名。这个文件就相当于C#项目里的Program文件一样,
里面会包含一个main函数。虽然这个函数不一定要命名为main。
还有注意下,Python代码的换行符为\。
# main of dir copy function
import sys import time from code_bk_cpy import * from code_bk_config import * #print __name__ def main(): config_path = sys.argv[1] # check if path of configuration path is empty if (not config_path): print 'configuration information is needed' return -1 config_handler = ConfigHandler(config_path) config_handler.read_config() config_list = config_handler.all_lines if len(config_list) != 3: print 'configuration information is not correct' return -1 # set source sep = ':' current_datetime = time.localtime(time.time()) root_path = config_list[0].split(sep)[1] prj_name = config_list[1].split(sep)[1] dst_path = config_list[2].split(sep)[1] root_path = (root_path + prj_name).replace('\n','') prj_folder = prj_name + str(current_datetime.tm_year) + str(current_datetime.tm_mon) + \ str(current_datetime.tm_mday) + str(current_datetime.tm_hour) + \ str(current_datetime.tm_min) + str(current_datetime.tm_sec) dst_path = (dst_path + '/' + prj_folder + '/').replace('\n','') copy_handler = CopyHandler(root_path,dst_path) copy_handler.move_content() print 'content moved' # start main function print __name__ if __name__ == "__main__": main()
有时间我会研究下TortoiseSVN调用那块的东西。估计不会难,就是调用exe传参的问题。
本人初学Python,如有问题敬请指正!谢谢。
以上这篇Python备份目录及目录下的全部内容的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

Pythonarrayssupportvariousoperations:1)Slicingextractssubsets,2)Appending/Extendingaddselements,3)Insertingplaceselementsatspecificpositions,4)Removingdeleteselements,5)Sorting/Reversingchangesorder,and6)Listcomprehensionscreatenewlistsbasedonexistin

NumPyarraysareessentialforapplicationsrequiringefficientnumericalcomputationsanddatamanipulation.Theyarecrucialindatascience,machinelearning,physics,engineering,andfinanceduetotheirabilitytohandlelarge-scaledataefficiently.Forexample,infinancialanaly

useanArray.ArarayoveralistinpythonwhendeAlingwithHomoGeneData,performance-Caliticalcode,orinterfacingwithccode.1)同質性data:arraysSaveMemorywithTypedElements.2)績效code-performance-calitialcode-calliginal-clitical-clitical-calligation-Critical-Code:Arraysofferferbetterperbetterperperformanceformanceformancefornallancefornalumericalical.3)

不,notalllistoperationsareSupportedByArrays,andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorinsertwithoutresizing,wheremactsperformance.2)listssdonotguaranteeconecontanttanttanttanttanttanttanttanttanttimecomplecomecomplecomecomecomecomecomecomplecomectacccesslectaccesslecrectaccesslerikearraysodo。

toAccesselementsInapythonlist,useIndIndexing,負索引,切片,口頭化。 1)indexingStartSat0.2)否定indexingAccessesessessessesfomtheend.3)slicingextractsportions.4)iterationerationUsistorationUsisturessoreTionsforloopsoreNumeratorseforeporloopsorenumerate.alwaysCheckListListListListlentePtotoVoidToavoIndexIndexIndexIndexIndexIndExerror。

Arraysinpython,尤其是Vianumpy,ArecrucialInsCientificComputingfortheireftheireffertheireffertheirefferthe.1)Heasuedfornumerericalicerationalation,dataAnalysis和Machinelearning.2)Numpy'Simpy'Simpy'simplementIncressionSressirestrionsfasteroperoperoperationspasterationspasterationspasterationspasterationspasterationsthanpythonlists.3)inthanypythonlists.3)andAreseNableAblequick

你可以通過使用pyenv、venv和Anaconda來管理不同的Python版本。 1)使用pyenv管理多個Python版本:安裝pyenv,設置全局和本地版本。 2)使用venv創建虛擬環境以隔離項目依賴。 3)使用Anaconda管理數據科學項目中的Python版本。 4)保留系統Python用於系統級任務。通過這些工具和策略,你可以有效地管理不同版本的Python,確保項目順利運行。

numpyarrayshaveseveraladagesoverandastardandpythonarrays:1)基於基於duetoc的iMplation,2)2)他們的aremoremoremorymorymoremorymoremorymoremorymoremoremory,尤其是WithlargedAtasets和3)效率化,效率化,矢量化函數函數函數函數構成和穩定性構成和穩定性的操作,製造


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

WebStorm Mac版
好用的JavaScript開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。