QTTabBarの機能
エクスプローラをタブ化するエクスプローラー拡張であるQTTabBarを私は使っているんだが、これには以下の機能がある。
選択しているファイルを引数に加えて、登録したコマンドをボタンを押すだけで実行できる |
---|
この機能(アプリケーションランチャー)を使い、下記のbackup.pyを実行するように設定すると、ファイルを簡単にバックアップできるようになります。
ファイルを修正する時に、とりあえず今のファイルを残しておこうとかをすぐにやるようになるのでお勧めです。
他のエクスプローラー拡張やファイラーでも同様の機能があれば、同じようにすれば便利です。
backup.py
機能
- ファイルのコピーを作る。
- その際に作成日時は変更せず。
- コピー先のファイル名は、元のファイル名に「-backupYYYYMMDD」の形で、元ファイルの更新日時を含んだものとする。
- 同じ日にちの更新日時のものが複数になる場合は、「(1)」などと連番を付加する。
- 拡張子は元ファイルと同じまま。
コード
backup.py
# -*- coding: utf-8 -*-
import sys
import re
def fext(fname):
"""
split file name to base name part and extension part
"""
pat = re.compile('(\.[^.]*)$')
res = pat.search(fname)
return(fname[0:res.start()], res.group(1))
def cp(inp,out):
"""
File copy
"""
import shutil
if False: # debug
print(inp,' --> ', out)
else:
shutil.copyfile(inp,out)
shutil.copystat(inp,out)
def backup(inp,ntry=10):
"""
File backup copy
"""
import os
import os.path
import time
m = os.stat(inp)
dstr = time.strftime('%Y%m%d', time.localtime(m.st_mtime))
(base,ext) = fext(inp)
out = base + '-backup' + dstr + ext
i = 0
while os.path.exists(out):
i += 1
if i > ntry:
print("I am tired because I did many try!", file=sys.stderr)
exit(1)
else:
out = base + '-backup' + dstr + '(' + str(i) + ')' + ext
cp(inp,out)
# Main
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(prog='backup.py')
parser.add_argument('-n', '--ntry',
help='Number of Max. try',
nargs='?', type=int,
default=10)
parser.add_argument('file', nargs='+')
args = parser.parse_args()
for f in args.file:
backup(inp=f,ntry=args.ntry)