[PR]当サイトはアフィリエイト広告を利用しています。
今回はファイルのバックアップをPythonで行うという内容です。
私はゲームのデータのバックアップに使っています。
特定のファイルを特定のフォルダにコピーするのって面倒な時があります。
フォルダをたどって、右クリックでコピー。
それからまたコピー先のフォルダをたどって貼り付け。
プログラムで一発作成。さらにフォルダも自動作成で重複しない。
こんなことができたら便利だと思います。
ではさっそく作成したプログラムです。
import datetime
import os
import shutil
d_today = datetime.date.today()
dt_now = datetime.datetime.now()
prefolder = '作りたいフォルダまでのパス\\作りたいフォルダ名' + str(d_today)
newfolder = prefolder
if(os.path.exists(prefolder)):
newfolder = prefolder + str(dt_now.hour) + str(dt_now.minute) + str(dt_now.second)
os.makedirs(newfolder+'\\1', exist_ok=True)
shutil.copy2('コピーしたいファイルまでのパス', newfolder+'\\1\\コピーするファイルの名前')
1行目から3行目で今回使うライブラリを読み込みます。
d_today = datetime.date.today()
dt_now = datetime.datetime.now()
prefolder = '作りたいフォルダまでのパス\\作りたいフォルダ名' + str(d_today)
5行目から8行目で今日の日付と現在の時刻を格納します。
変数prefolderは作りたいフォルダの位置と名前を設定します。フォルダ名に日付を加えているのは、日付ごとに管理して同じファイルを重複なくバックアップするためです。
newfolder = prefolder
if(os.path.exists(prefolder)):
newfolder = prefolder + str(dt_now.hour) + str(dt_now.minute) + str(dt_now.second)
os.makedirs(newfolder+'\\1', exist_ok=True)
8行目から11行目で実際にバックアップ先のフォルダを作ります。
os.makedirs()は第一引数に作りたいフォルダの位置と名前を設定します。第二引数のexist_ok=Trueは、既に存在しているディレクトリを指定してもエラーにならない設定になります。Falseでも動きますが一応Trueにしています。
9行目から10行目でフォルダの重複チェックをしています。同じフォルダがあったら、秒単位で異なる名前のフォルダへのパスを作成します。
11行目で実際にコピー先フォルダを作成します。
今回は新しく1という名前のフォルダを作成してそこにファイルをコピーします。
コピーするファイルが二つ以上あるとフォルダをその数だけ作ってコピーしたいときがあるからです。
shutil.copy2('コピーしたいファイルまでのパス', newfolder+'\\1\\コピーするファイルの名前')
shuttle.copy2()で実際にファイルをコピーします。
引数の設定は12行目を参考にしてください。
第一引数がコピー元の情報、第二引数がコピー先の情報です。
このプログラムを実行すると、ここでは「サンプルフォルダ」という名前のフォルダを作るとして、コピーしたいフォルダの中に「サンプルフォルダ2020-11-22」というフォルダができて、作成したいフォルダ名のフォルダの中に「1」というフォルダができて、その中に「コピーするファイルの名前」(サンプル.txtなど)のファイルがコピーされます。
今日も我が家でこのプログラムが地味に活躍しています。