Python如何备份目录及目录下的全部内容

就目录拷贝的部分,思想很简单。读配置文件中的配置信息。

创新互联主营和田县网站建设的网络公司,主营网站建设方案,重庆APP开发,和田县h5小程序设计搭建,和田县网站营销推广欢迎和田县等地区企业咨询

生成一个项目名称加日期时间组成的文件夹名为分枝名称。把当前项目下的全部内容拷贝到这个目录下。然后要做的研究就是调用TortoiseSVN命令嵌入这部分代码。

现在看代码:

1. 读取配置文件

配置文件很简单。用的就是txt文件。 格式类似于:

 
 
 
  1. # root:/Users/lichallenger/test_src/
  2. # project:test
  3. # destination:/Users/lichallenger/test_dst/

BTW: 我用的是Mac所以目录格式是这样的。如果你用的是Windows的话请适当修改配置文件。

读文件就是最简单的了。直接用标准库的文件操作模块打开文件,读出全部的配置。一共就三行,所以也不用考虑效率什么的了。

 
 
 
  1. # open config file and read config information
  2. # author: bruce li
  3. class ConfigHandler(object):
  4.     #
  5.     def __init__(self,config_path):
  6.         '''''initializer'''
  7.         self.config_path = config_path
  8.     
  9.     #read config infor
  10.     def read_config(self):
  11.         f = open(self.config_path)
  12.         try:
  13.             self.all_lines = f.readlines()
  14.         except:
  15.             raise    
  16.         else:
  17.             f.close() 

2. 拷贝目录和目录内容

拷贝目录用了shutil模块。里面有个方法可以直接把目录和目录下的全部内容拷贝到制定的其他目录。

这样就省得搞目录遍历之类的代码了。

 
 
 
  1. # copy dir(s) & file(s) to configured path
  2. # author: bruce li
  3. import shutil
  4. class CopyHandler(object):
  5.     #
  6.     def __init__(self,src_path,dest_path):
  7.         self.src_path = src_path
  8.         self.dest_path = dest_path
  9.     def move_content(self):
  10.         try:
  11.             shutil.copytree(self.src_path,self.dest_path)
  12.         except:
  13.             raise    
  14.     @staticmethod
  15.     def    move_src_content(src, dest):
  16.         try:
  17.             shutil.copytree(src_path,dest_path)
  18.         except:
  19.             raise

3. 综合调用

这里用了time模块获取当前时间,然后生成目标文件夹名称的一部分。

外界给python传的系统参数的***个是文件名。这个文件就相当于C#项目里的Program文件一样,

里面会包含一个main函数。虽然这个函数不一定要命名为main。

 
 
 
  1.  # main of dir copy function
  2. import sys
  3. import time
  4. from code_bk_cpy import *
  5. from code_bk_config import *
  6. #print __name__
  7. def main():
  8.     config_path = sys.argv[1]
  9.        # check if path of configuration path is empty
  10.     if (not config_path):
  11.         print 'configuration information is needed'
  12.         return -1     
  13.     config_handler = ConfigHandler(config_path)
  14.     config_handler.read_config()
  15.     config_list = config_handler.all_lines
  16.     if len(config_list) != 3:
  17.         print 'configuration information is not correct'
  18.         return -1
  19.         # set source
  20.     sep = ':'
  21.     current_datetime = time.localtime(time.time())
  22.     root_path = config_list[0].split(sep)[1]
  23.     prj_name = config_list[1].split(sep)[1]
  24.     dst_path = config_list[2].split(sep)[1]
  25.     root_path = (root_path + prj_name).replace('\n','')
  26.     prj_folder = prj_name + str(current_datetime.tm_year) + str(current_datetime.tm_mon) + \
  27. str(current_datetime.tm_mday) + str(current_datetime.tm_hour) + \
  28. str(current_datetime.tm_min) + str(current_datetime.tm_sec)
  29.     dst_path = (dst_path + '/' + prj_folder + '/').replace('\n','')
  30.     copy_handler = CopyHandler(root_path,dst_path)
  31.     copy_handler.move_content()
  32.     print 'content moved'
  33. # start main function
  34. print __name__
  35. if __name__ == "__main__":
  36.     main()

还有注意下,Python代码的换行符为\。

网站名称:Python如何备份目录及目录下的全部内容
网页URL:http://www.shufengxianlan.com/qtweb/news30/495030.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联