Pythonista3内でファイルをコピーするモジュール
梅雨なんだか夏なんだかよくわからない天気が続いていますね。個人的には梅雨よりは夏の方が好きなので、もっと晴れていて欲しいのですが、水不足とかは困るのでなんとも言えませんね。
本題に移りますが、Pythonistaでスクリプトを作っていた時になんだかんだ不便を感じていたのが、なぜかファイルのコピーができないということ。一個のスクリプトを作って、それを改良する時に複製してバックアップを取っておきたいたちなのですが、そういうことができない。
もちろん中身をコピーして新しいファイルに貼り付ければいいのですが、それはなんか違うでしょう。
そんな不便を解消するために、ファイルやフォルダをコピーできるようにするスクリプトを組んでみましたので、紹介します。
- 参考記事
- ファイルをコピーする - Python Tips
- 11.2. os.path — 共通のパス名操作 — Python 3.5.1 ドキュメント
- Python で 絶対パス名からファイル名を取得する : 僕と僕のサル以外、みんな何かを隠してる
- python - 'file' object has no attribute 'rfind' - Stack Overflow
導入方法
いつも通りちょちょっとインポートしましょう。
中身は以下です。
# coding: utf-8 import os import appex import shutil import console def main(): 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('.') shutil.copyfile(i, os.path.join(PATH, t[0] + '-copy.' + t[1])) if os.path.isdir(i): shutil.copytree(i, os.path.join(PATH, NAME + '-copy')) console.alert('copied!', '', 'ok', hide_cancel_button=True) else: console.alert('Error Occured', 'Please launch from extension', 'ok', hide_cancel_button=True) if __name__ == '__main__': main()
使い方はエクステンションに登録する方法から。こことかと同じ。
コピーしたいファイルを選択して、シェアボタンを選択して、Pythonista3をタップしたら、登録しておいたこのスクリプトを使います。
コピーされたファイルは同じ場所に『〜〜〜−copy』という名前で保存されます。そしたらあとは煮るなり焼くなり好きにしてもらって大丈夫です。
これでまたPythonistaが一層便利になりました。
こないだ作ったスクリプトの機能がすでに実装されていて焦ったけど、今回はそんなことがないことを祈っています。というかないよね。うん。