ダブルクリックやドラッグ&ドロップでpythonプログラムを実行できるようにしました。
やり方
知ってる人にとっては当たり前だと思うんですが、バッチファイルを使えばダブルクリックやドラッグ&ドロップでpythonプログラムを実行できるようになります。いちいちキーボードで処理対象のファイルPATHを入力したりする面倒な作業を簡略化できます。
試行環境
Windows10
python3.6
バッチファイルとは
みんなが大好きな黒い画面、WindowsのコマンドプロンプトはOSのAPIを直接操作できる権限の強いインターフェイスです。ここに対して1行ずつコマンドを入力していく事も出来ますが、コマンドをテキストファイルにまとめて書いたバッチファイルを使っておいてまとめて処理する仕組みもあります。今回はこれを使ってpythonプログラムをダブルクリックやドラッグ&ドロップから使えるようにしちゃいます。
バッチファイルの作り方
作るのは簡単でテキストファイルにコマンドを1行ずつ書くだけです。拡張子をbatにするとバッチファイルとして扱ってくれます。あとは適当なエディタ(メモ帳でも良い)で書き換えるだけです。ダブルクリックでpythonのコードを実行する
バッチファイルと同じフォルダに実行するpythonファイルを置いておきます。とりあえず以下のファイルを置いたものとします。
print('Hello, This is test.py!')
python.exeにPATHが通ってる環境なら以下でtest.pyを実行できます。
python hoge.py
フォルダが違う場合もフルPATHを書けば実行できます。
conda環境のpython.exeを使う場合
python.exeをフルPATH指定で呼べばOKです。
E:\Anaconda3\envs\tf\python.exe hoge.py
pythonの場所はconda activateしておいてwhere pythonで探せばすぐ分かります。
conda環境のpython.exeを使う場合 その2
conda activateもできます。
call conda activate tf
python hoge.py
黒い画面に最小化して頂く
黒い画面さまにやって頂いてるので当然黒い画面が表示されるんですが、動作をモニターする必要がないときは見た目的に圧がすごいので最小化しておいてもらいます。その場合はバッチファイルを2つ使って、1つめのバッチファイルから最小化したコマンドプロンプトを呼んで、新しいコマンドプロンプトで2つめのバッチファイルを呼ぶようにします。
start /min %~dp0test2.bat %*
startコマンドに最小化オプション/minをつけて、最小化した状態でコマンドプロンプトを開きます。開いてから実行するコマンドを指定できますので、そこで2つめのバッチファイルを実行するように指定します。1つめのバッチファイルはそこで処理が終了しますので勝手に消えてくれます。
@echo off
E:\Anaconda3\envs\tf\python.exe test.py
2つめのバッチファイルは先程と同様にpython.exeを実行します。
ドラッグ&ドロップでファイルに対して処理を行う
pythonコードに引数の受け取り処理を追加します。
import sys
print(sys.argv[-1])
> python test2.py hoge
hoge
test2.pyにコマンドライン引数を渡せるようになりました。バッチファイルにドラッグ&ドロップすると%1としてファイルPATHが受け取れるので以下のようにするとバッチファイルにドラッグ&ドロップしたファイルをpythonから処理できるようになります。処理後にコマンドプロンプトがすぐ消えてしまうので、timeoutで待機するようにしています。
python hoge.py %1
timeout 10
上記のバッチファイルに適当なファイルをドラッグ&ドロップするとファイルのPATHをpythonに渡してくれます。後はpython側で好きなように処理するだけです。
c:\hoge\fuga.txt
レッツトライ!