Pythonにドラッグ&ドロップでファイルをわたす超簡単な方法

ファイルをドラッグ&ドロップで処理させる一番簡単なやり方。

PythonとExcelをハイブリッドに駆使するという当サイトのコンセプト上、ExcelブックをPythonスクリプトにわたさなければならない機会が多々あります。順当にやるならパスを引数にしてわたす方法ですが、もっと超絶簡単にできるんです。

私は最近これを知りましたので、当サイトの過去の記事ではこれにそぐわないことをやっている場合があります。

Pythonにファイルを引数でわたす

まずは引数でわたす方法を確認しておきます。次はExcelファイルを読み込んでA列の値をprintで出力していくだけのスクリプト(excel_reader.py)です。

import sys
import openpyxl as excel

fp = sys.argv[1]

wb = excel.load_workbook(fp)
ws = wb.active

for row in ws.iter_rows():
    print(row[0].value)

ここで

fp = sys.argv[1]

が引数(ファイルパス)を受け取る処理です。argvは与えたコマンドライン引数をリストで持ってきます。インデックスが1始まりなのが罠ですが、リファレンスによると[0]はスクリプトの名前が入っているそうです。

argv[0]をprintで出力して確認してみたら、ファイルのフルパスでした。しかし条件によっては必ずしもそうはならないようです。ともかく詳しくはリファレンスを読んでもらうとして、ユーザーが与えた引数は[1]からなので注意しましょう。

読み込むExcelブック(saitama_city.xlsx)は次のような内容です。

file_dd1.png

先のPythonスクリプトをこのExcelブックのパスを引数として実行するコマンドラインは次のとおりです。どちらのファイルもD:\にあるとします。

file_dd2.png

Pythonスクリプトに続けてExcelブックのパスを指定して実行します。結果はこうなります。

file_dd3.png

無事にうごきましたが、せっかくWindowsというGUIを使っているのにわざわざCUIでパスを指定するなんて面倒くさいですよね。ファイルをドラッグ&ドロップしたらやってくんないかなと思うのが普通です。

PythonにファイルをD&Dでわたす

ここから本題ですが、実は何もしなくてもすでに出来る状態になっていることが大半です。

Pythonスクリプトのファイル(.py)が次のようなアイコンになっていれば準備完了です。

file_dd4.png

その他のアイコン(たとえばテキストエディタ)になっていたらダメです。

file_dd5.png

アイコン(=拡張子の関連付け)を変えるには、ファイルを右クリックしてメニューから変更ボタンです。

file_dd6.png

file_dd7.png

これはPythonランチャというアプリで実体はC:\Windows\py.exeにあります。

WindowsのインストーラーでPythonをインストールすると自動的に.pyファイルに関連付けがされていると思います。

あとは単純にExcelブックをスクリプトの.pyファイルへドラッグ&ドロップするだけです。

先のスクリプトだと処理が終わった瞬間にコンソールが閉じてしまい、よほどの動体視力の持ち主以外、何もわからないので少し改造します。

import sys
import openpyxl as excel
import time

fp = sys.argv[1]

wb = excel.load_workbook(fp)
ws = wb.active

print('OK!ここで俺たち SaitamaCity のイカしたメンバーを紹介するゼ!!')
for row in ws.iter_rows(min_row=2):
    time.sleep(1)
    print(row[0].value + '!')

input('Thank You! いくぜ!ラストナンバー!「希望のまち」')

D&Dしたファイルのパスがsys.argv[1]です。実行してみましょう。結果は次のようになります。アニメーションでループしているので途中の場合は最初に戻るまでお待ちください。

このようにD&Dするだけで簡単にExcelブックを処理できます。これで神エクセルをビシバシDustBoxへ送れますね!

普段IDEでスクリプトを書いている人はこれで何も問題ないと思いますが、テキストエディタで.pyファイルを直接編集している人は、この状態だとファイルダブルクリックでスクリプトが走ってしまうので注意してください。

おわり。

related pages
フォルダ内の不必要なファイルを一掃する
共有フォルダの放置ファイルを消し去るPythonスクリプト。

社内の共有フォルダなど、複数人が使用する環境あるあるとして、関係のないファイルがいつまでも放置される問題がありますよね。人間が削除していくと「これはまだ使いそうだから本人に確認しようかな?」といった雑念が入り込み作業を邪魔します。そこで血も涙もないコンピューターの出番です。

Read More ...
WindowsのパスをPythonで使えるようにする
ファイルパスをリプレースorエスケープするAPI。

Windowsのファイルパスは「\」マークで階層が表現されています。「\」はPythonのエスケープシーケンスで使われる文字のため、WindowsシステムからコピペしたパスをPythonで扱おうとするとうまくいきません。毎度手作業で置き換えたりエスケープしたりするのは面倒なので、コンピューターにやらせましょう。

Read More ...
NCMBにPythonでファイルをアップする
NCMBのREST-APIをPythonから利用します。

NCMBはmBaaSです。スマホアプリのバックエンドとしての機能は当然そろっていますが、REST-APIが用意されており、スマホからに限らずHTTPでアクセスできればデータを出し入れできます。すなわちPythonからだろうとVBAからだろうと利用できます。

Read More ...
この記事の
作成日

2020-06-27

更新日

2020-06-30

ページ内検索
目次
WEB MASTER
さいた
神エクセル撲滅協会理事(自称)
さいたま市民 埼玉こそ地上の楽園