18
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ダブルクリックやドラッグ&ドロップでpythonを実行する (Windows)

Last updated at Posted at 2019-09-20

ダブルクリックやドラッグ&ドロップでpythonプログラムを実行できるようにしました。

やり方

知ってる人にとっては当たり前だと思うんですが、バッチファイルを使えばダブルクリックやドラッグ&ドロップでpythonプログラムを実行できるようになります。いちいちキーボードで処理対象のファイルPATHを入力したりする面倒な作業を簡略化できます。

試行環境

Windows10
python3.6

バッチファイルとは

みんなが大好きな黒い画面、WindowsのコマンドプロンプトはOSのAPIを直接操作できる権限の強いインターフェイスです。ここに対して1行ずつコマンドを入力していく事も出来ますが、コマンドをテキストファイルにまとめて書いたバッチファイルを使っておいてまとめて処理する仕組みもあります。今回はこれを使ってpythonプログラムをダブルクリックやドラッグ&ドロップから使えるようにしちゃいます。

バッチファイルの作り方

作るのは簡単でテキストファイルにコマンドを1行ずつ書くだけです。拡張子をbatにするとバッチファイルとして扱ってくれます。あとは適当なエディタ(メモ帳でも良い)で書き換えるだけです。

ダブルクリックでpythonのコードを実行する

バッチファイルと同じフォルダに実行するpythonファイルを置いておきます。とりあえず以下のファイルを置いたものとします。

test.py
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つめのバッチファイルを呼ぶようにします。

test1.bat
start /min %~dp0test2.bat %*

startコマンドに最小化オプション/minをつけて、最小化した状態でコマンドプロンプトを開きます。開いてから実行するコマンドを指定できますので、そこで2つめのバッチファイルを実行するように指定します。1つめのバッチファイルはそこで処理が終了しますので勝手に消えてくれます。

test2.bat
@echo off
E:\Anaconda3\envs\tf\python.exe test.py

2つめのバッチファイルは先程と同様にpython.exeを実行します。

ドラッグ&ドロップでファイルに対して処理を行う

pythonコードに引数の受け取り処理を追加します。

test2.py
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

レッツトライ!

18
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
24

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?