ホームページ >バックエンド開発 >Python チュートリアル >Python バックアップ ディレクトリとそのディレクトリ下のすべてのコンテンツを実装する方法
元々、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をご支援いただければ幸いです。