Python备份目录及目录下的全部内容的实现方法
本来是想写一个东西可以直接调用TortoiseSVN保存当前代码到一个分枝下的。
可惜调用SVN的部分还在研究。就先写了目录拷贝的部分。
如果有喜欢研究Python的童鞋愿意提供想法或者建议的话,
这里先谢谢了。:)
就目录拷贝的部分,思想很简单。读配置文件中的配置信息。
生成一个项目名称加日期时间组成的文件夹名为分枝名称。把当前项目下的全部内容
拷贝到这个目录下。
然后要做的研究就是调用TortoiseSVN命令嵌入这部分代码。
现在看代码:
1.读取配置文件
配置文件很简单。用的就是txt文件。格式类似于:
#root:/Users/lichallenger/test_src/ #project:test #destination:/Users/lichallenger/test_dst/
BTW:我用的是Mac所以目录格式是这样的。如果你用的是Windows的话请适
当修改配置文件。
读文件就是最简单的了。直接用标准库的文件操作模块打开文件,读出全部的配置。一共就三行,所以
也不用考虑效率什么的了。
#openconfigfileandreadconfiginformation #author:bruceli classConfigHandler(object): # def__init__(self,config_path): '''initializer''' self.config_path=config_path #readconfiginfor defread_config(self): f=open(self.config_path) try: self.all_lines=f.readlines() except: raise else: f.close()
拷贝目录用了shutil模块。里面有个方法可以直接把目录和目录下的全部内容拷贝到制定的其他目录。
这样就省得搞目录遍历之类的代码了。
#copydir(s)&file(s)toconfiguredpath #author:bruceli importshutil classCopyHandler(object): # def__init__(self,src_path,dest_path): self.src_path=src_path self.dest_path=dest_path defmove_content(self): try: shutil.copytree(self.src_path,self.dest_path) except: raise @staticmethod defmove_src_content(src,dest): try: shutil.copytree(src_path,dest_path) except: raise
这里用了time模块获取当前时间,然后生成目标文件夹名称的一部分。
里面会包含一个main函数。虽然这个函数不一定要命名为main。
还有注意下,Python代码的换行符为\。
importsys importtime fromcode_bk_cpyimport* fromcode_bk_configimport* #print__name__ defmain(): config_path=sys.argv[1] #checkifpathofconfigurationpathisempty if(notconfig_path): print'configurationinformationisneeded' return-1 config_handler=ConfigHandler(config_path) config_handler.read_config() config_list=config_handler.all_lines iflen(config_list)!=3: print'configurationinformationisnotcorrect' return-1 #setsource 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'contentmoved' #startmainfunction print__name__ if__name__=="__main__": main()
有时间我会研究下TortoiseSVN调用那块的东西。估计不会难,就是调用exe传参的问题。
本人初学Python,如有问题敬请指正!谢谢。
以上这篇Python备份目录及目录下的全部内容的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。