こんにちは、くのへです。
ここから、日常作業が楽になる「Pythonデスクトップ簡易アプリ10選」を投稿していきます。
しかも、このアプリを開発を通して、Pythonのライブラリなどを勉強して習得してしまおう!という企画です。
是非、一緒に楽しんで走って頂きたいと思います。
3本目は、すでに作成されたファイルを、この.py(または.pyw)ファイルにドラッグアンドドロップすると、「yyyymmdd_」を追加リネームしてくれるツールを作成します。
動作デモはこちらです。
このコードを作成する過程で、sysライブラリのsys.argv[1]によるドラッグアンドドロップ検出、およびos.path.split、os.renameの使い方を習得します!
また、CursorやVScode(GitHubCopilot)を使っている方は、生成AIに作って貰ったはいいけど、コードが全然わからない!!ということもあろうと思います。
その方も、この記事でライブラリを習得すると、コードが読めるようになるんじゃないかな、と思います!
なお、デスクトップで.pyや.pywを動かす設定や、生成AI CursorでPythonを使う設定については、この↓動画をご参照ください
Pythonコードの解説
今日のコードはこちらです!
import os
import sys
import datetime
file_path = sys.argv[1]
today = datetime.date.today()
date_str = today.strftime("%Y%m%d")
dir_name, file_name = os.path.split(file_path)
new_file_name = f"{date_str}_{file_name}"
new_file_path = os.path.join(dir_name, new_file_name)
os.rename(file_path, new_file_path)
今回はsysライブラリが初登場です。
このライブラリは環境情報などを取得するライブラリなのですが、ちょっと難しいです。情シスなどのお仕事をされていない方はsys.argv[1]だけ覚えてしまえば良いと思います。
コードの説明
まずコードの初めに出てくるこちらがポイントです。
file_path = sys.argv[1]
sys.argv[1]を使うと、ドラッグアンドドロップされたファイルの絶対パスを取得することが出来ます。
絶対パスを取得してしまえば、後はそのファイルを開いたりすることが出来ます。今回はファイル名を変更することに使います。
次の以下のコードでyyyymmdd形式の文字列を作っています。詳細は1本目の記事を御参照ください。
today = datetime.date.today()
date_str = today.strftime("%Y%m%d")
以下のコードがこの記事の2つ目のポイントです。
os.path.split(ファイルパス)を使うと、ファイルパスのフォルダまでのパスとファイル名を分離できます。これをそれぞれdir_name、file_nameという変数に代入しています。
dir_name, file_name = os.path.split(file_path)
new_file_name = f"{date_str}_{file_name}"
new_file_path = os.path.join(dir_name, new_file_name)
あとはf文字列(:”文字列”の前にfと書くことで、文字列の中に変数を埋め込むPythonの書法。変数を埋め込む際には波カッコ{}で囲む)を使って新ファイル名を作り、os.path.joinを使って新パスを作っています。
最後のこのコードが今回の最後のポイントです。
os.rename(旧パス,新パス)と書くことで、リネームすることが出来ます
os.rename(file_path, new_file_path)
今回のコードまとめ
sysライブラリ
- sysライブラリは、プログラムが動いているときの環境情報を取得するためのライブラリ。むずい。
- sys.argv[1]と書くと「ドラッグ&ドロップ」を検出して、そのファイルの絶対パスを取得できる。sysライブラリはこれだけ覚えればOK!
osライブラリ(os.path.split、os.remame)
- os.path.split(ファイルパス)と書くと、フォルダパスとファイル名を分けられる。
- os.rename(元の場所, 新しい場所)と書くと、ファイルの名前を変更できる。
今回もスキルアップヨシ!!
(参考)ドラッグ&ドロップがうまくいかない時の対処法
パソコンの環境によって、.pyや.pywファイルにドラッグアンドドロップが出来ない場合があります。この場合、次の操作を行うと改善される可能性があるので、試してみて下さい。
1..py(または.pyw)ファイルを右クリックして、「プログラムから開く」
2.ズラっと出てくるリストの一番下にある「PCでアプリを選択する」をクリック
3.表示されたウィンドウで次のフォルダパスを選択C:\Users\%username%\AppData\Local\Programs\Python
4.「Launcher」というフォルダの中の、「py.exe」または「pyw.exe」を選び、「常に使う」で開く
5.(もしも4にて、現在Lancherの「py.exe」または「pyw.exe」を使っている場合は、3のフォルダのPython3XX(:XXはバージョン)の中のpython.exeもしくはpythonw.exeを選択し、常に使うで開く)
この作業を行うことでドラッグアンドドロップ出来るようになる可能性がありますので、試してみて下さい。
最後に
Pythonで、ファイルをドラッグ&ドロップするだけで名前を自動変更するツールを作しました。
これを通してsysライブラリ(sys.argv[1])を習得し、osライブラリの更なる習得も出来たのではないかと思います。
Pythonはデスクトップで動くアプリを手軽に作れます。ドラッグアンドドロップを操れるようになると幅が広がりますので、今後もどんどん習得していきましょう。