ホームページ  >  記事  >  バックエンド開発  >  Python バックアップ ディレクトリとそのディレクトリ下のすべてのコンテンツを実装する方法

Python バックアップ ディレクトリとそのディレクトリ下のすべてのコンテンツを実装する方法

WBOY
WBOYオリジナル
2016-06-16 08:47:55976ブラウズ

元々、TortoiseSVN を直接呼び出して現在のコードをブランチに保存できるものを書きたかったのです。

残念ながら、SVN を呼び出す部分はまだ研究中です。最初にディレクトリコピー部分を書きました。

Python を勉強したい人がいたら、アイデアや提案を提供してください。

よろしくお願いします。 :)

ディレクトリのコピー部分に関しては、考え方は非常にシンプルです。設定ファイル内の設定情報を読み取ります。

プロジェクト名と日付と時刻を組み合わせたブランチ名という名前のフォルダーを生成します。すべてのコンテンツを現在のプロジェクトの下に置きます

このディレクトリにコピーします。

次に行うべき調査は、TortoiseSVN コマンドを呼び出して、コードのこの部分を埋め込むことです。

次にコードを見てみましょう:

1. 設定ファイルを読み込みます

設定ファイルはシンプルです。 txtファイルを使用します。 形式は次のようなものです:

# root:/Users/lichallenger/test_src/
# project:test
# destination:/Users/lichallenger/test_dst/

ところで: 私は Mac を使用しているので、ディレクトリ形式は次のようになります。 Windows を使用している場合は、適応してください

設定ファイルを変更する場合。

ファイルを読み取るのが最も簡単です。標準ライブラリのファイル操作モジュールを直接使用して、ファイルを開いてすべての設定を読み出します。全部で3行しかないので

効率など考える必要はありません。

# 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# プロジェクトのプログラム ファイル

に相当します。

これには main 関数が含まれます。ただし、この関数に main という名前を付ける必要はありません。

Python コードの改行文字にも注意してください。

# ディレクトリコピー関数のメイン

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バックアップディレクトリの実装方法とディレクトリ内の内容はすべてエディタで共有している内容ですので、参考にしていただければ幸いです。Script Homeをご支援いただければ幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。