Python備份目錄及目錄下的全部內容

2021-09-22 07:44:09 字數 3548 閱讀 8064

本來是想寫乙個東西可以直接呼叫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

defread_config(self):f =

open(self.config_path)

try:

self.all_lines 

=f.readlines()

except

:raise

else:

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

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

3. 綜合呼叫

這裡用了time模組獲取當前時間,然後生成目標資料夾名稱的一部分。 

外界給python傳的系統引數的第乙個是檔名。這個檔案就相當於c#專案裡的program檔案一樣,

裡面會包含乙個main函式。雖然這個函式不一定要命名為main。 

還有注意下,python**的換行符為\。 

import

sysimport

time

from

code_bk_cpy 

import

*from

code_bk_config 

import*#

print __name__

defmain():

config_path 

=sys.ar**[1]

#check if path of configuration path is emptyif(

notconfig_path):

print

'configuration information is needed

'return-1

config_handler 

=confighandler(config_path)

config_handler.read_config()

config_list 

=config_handler.all_lines

iflen(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備份檔案到指定目錄下

python備份檔案到指定目錄下 usr bin python filename backup ver1.py import os import time source r c python 目標目錄 target dir d python 指定目錄 target target dir time.s...

python查詢目錄及子目錄下特定檔案

寫這篇部落格的緣由 面試歸來翻脈脈發現乙個陌生的朋友提出乙個面試題,設計實現遍歷目錄及子目錄,抓取.pyc檔案。並貼出兩種實現方法 個人感覺,這兩種方法中規中矩,不像是python的風格。python風格的實現可以考慮python列表推導式。下面貼出我的實現方法 1 defgetfiles path...

Golang獲取目錄下的檔案及目錄資訊

一 獲取當前目錄下的檔案或目錄資訊 不包含多級子目錄 func main fmt.println len fileinfolist for i range fileinfolist 二 獲取當前目錄下的檔案或目錄名 不包含多級子目錄 package main import os io ioutil ...