pythonista3でファイルのバックアップがしたい→すでに実施されてる方がいた

ファイルの編集前にバックアップがとりたい

ファイル編集していて「あ、間違えた、前の状態に戻りたい!」とか「元々、どうなってたっけ…」みたいなことがよくあって、undoではもう戻れないところに来たりしてて絶望なわけですが、バックアップがあれば! バックアップさえあればすぐにこの数時間を削除してタイムリープできるのですが、pythonistaにはその時間跳躍機能が備わってないので、こりゃもう自分で大きく踏み込んで飛ぼうじゃないか、と思ったけど、やっぱりこれも既に実施されてる方がいたので、僕は飛ばずにその結果だけを利用させてもらい、進歩のスパイラルの先端からネジを巻きはじめることができるのでした。 だいたいのことには先人がいるか、必要としてるのは自分のみという。

設定する

下記サイトを参考にそのまま設定する。 わかりやすい! 感謝!

Pythonista3内でファイルをコピーするモジュール http://garretcafe.com/blog/3358

設定の動画

前回gifアニメにしたのがなんだかニヤニヤ何度も見て楽しいので、今回は動画にした。 iPhoneだけで動画作れるなんて楽しすぎる。 せっかくpythonista買ってプログラムやるぜーと勢い勇んでたのに、動画編集に興味が移ってしまいそうでこわいな。

少し手を加えて自分好みにした!(追記20200406)

差分取れるスクリプトを作ったタイミングで、このscriptに少し手を加えて自分好みにした。 tkrou.hatenablog.jp

変更点は

  • バックアップファイル名に日時をつけた
  • そのファイル名をダイアログに表示した

# coding: utf-8
import os
import appex
import shutil
import console
import datetime

def main():
    dt_now = datetime.datetime.now()
    bk = dt_now.strftime('%Y%m%d%H%M%S')
    if appex.is_running_extension():
        FILE = appex.get_file_paths()
        for i in FILE:
            NAME = os.path.basename(i)
            PATH = os.path.dirname(i)
            if os.path.isfile(i):
                t = NAME.split('.')
                bkfilename = t[0] + '-' + bk + '.' + t[1]
                bkfile = os.path.join(PATH, bkfilename)
                shutil.copyfile(i, bkfile)
                console.alert('copied! '+bkfilename, '', 'ok', hide_cancel_button=True)
            if os.path.isdir(i):
                bkfilename = NAME + '-' + bk
                bkfile = os.path.join(PATH, bkfilename)
                shutil.copytree(i, bkfile)
                console.alert('copied! '+bkfilename, '', 'ok', hide_cancel_button=True)
    else:
        console.alert('Error Occured', 'Please launch from extension', 'ok', hide_cancel_button=True)

if __name__ == '__main__':
    main()

こういうのできるのが、普通のアプリとの違いだな。めちゃ楽しい!