みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
プログラミング初心者向けにPythonでお仕事で使うプログラムをまとめて起動するツールを作成する方法をお伝えしています。
前回の記事はコチラ。
subprocessモジュールのPopen関数を使ってアプリケーションを起動する方法をお伝えしました。
前回は単純にアプリケーションを立ち上げるだけでした。
そうなると、せっかくExcelやWordなどのアプリケーションを立ち上げても、新規ファイルを選択するか、いずれかのファイルを開かないと作業ができないわけです。
ですが、具体的に特定のファイルを開いて、昨日の続きから作業を開始できればありがたいときもありますよね。
加えて、作業用フォルダも同時に開けたりすると便利です。
ということで、今回はPythonで特定のファイルを開く方法とフォルダを開く方法についてお伝えします。
前回のおさらい
では、まず前回の復習から。
以下スクリプトを作りました。
import subprocess
subprocess.Popen(r'C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE')
subprocessモジュールのPopen関数を使って、Excelを起動するというものでした。
フルパスを調べて、文字列にraw文字列「r」を使ってエスケープを無効化するんでしたね。
今回は、単純にExcelを起動するだけでなく、Excelの特定のファイルを開いてみたいと思いますよ。
Popen関数でアプリケーションとともにファイルを開く
アプリケーションとともに、その特定のファイルを開く場合は、Popen関数にリストを渡します。
以下のように記述します。
例えば、デスクトップにある「Book1.xlsm」を開きたいとします。
その場合、Pythonのスクリプトとしては以下のようにすればOKですね。
import subprocess
subprocess.Popen([r'C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE', r'C:\Users\ntaka\Dropbox\desktop\Book1.xlsm'])
実行すると、指定のファイルが開きます。
しかし、いかんせん長い。一行がとてつもなく長い。
Popen関数を使ったステートメントを短くする方法
Popen関数を使ったステートメントを短くする方法をいくつか検討してみましょう。
変数を使う方法
簡単な方法としては、開くファイルのフルパスを変数に格納する方法です。
開くファイルのフルパスを、いったん変数EXCELに格納すべく、以下のように変更します。
EXCEL = r'C:\Users\ntaka\Dropbox\desktop\Book1.xlsm'
import subprocess
subprocess.Popen([r'C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE', EXCEL])
これはこれでよいですね。
もちろん、プログラムファイルのフルパスも変数に格納してもOKですね。
既定のプログラムでファイルを開く
拡張子が「.xlsx」であれば、ダブルクリックすればExcelでそのファイルを開きますよね。
これは、拡張子に応じて既定のプログラムが関連付けられていることによります。
Pythonではファイルに応じて既定のプログラムで開く方法がありまして、それを使えばスクリプトを短く記述することができます。
具体的には、コマンドプロンプトのstartコマンドの力を借ります。
startコマンドは、別ウィンドウでプログラムを実行するコマンドです。
実行可能なプログラムを指定するとそのプログラムを実行しますし、ファイルを指定すると関連付けられたアプリケーションが起動します。
PythonのPopen関数では、以下のようにしてそのstartコマンドを実行することができます。
Windowsの場合は、キーワード引数shellにTrueを指定する必要があります。これにより指定のコマンドはシェルつまりコマンドプロンプトによって実行されることになります。
では、実際にスクリプトを組んで実行してみましょう。
こちらです。
EXCEL = r'C:\Users\ntaka\Dropbox\desktop\Book1.xlsm'
import subprocess
subprocess.Popen(['start', EXCEL], shell=True)
だいぶスッキリしましたね!
既定のプログラムが決まっているファイルに関しては、こちらのほうがよさそうです。
Popen関数でフォルダを開く
ファイルだけではなくて、フォルダを開きたいときもありますね。
フォルダを開くといっても、Windowsでいうとエクスプローラーというアプリケーションでフォルダを開いているだけですので、これまでの応用で実現可能です。
Popen関数で、プログラムファイルにexplorerを指定してあげればよいのです。
フォルダはフォルダのフルパスを指定します。
つまり、以下のようなスクリプトになりますね。
EXCEL = r'C:\Users\ntaka\Dropbox\desktop\Book1.xlsm'
FOLDER = r'C:\Users\ntaka\Dropbox\desktop'
import subprocess
subprocess.Popen(['start', EXCEL], shell=True)
subprocess.Popen(['explorer', FOLDER])
これで、Excelファイル「Book1.xlsm」とともに、デスクトップフォルダが開いてくれます。
まとめ
以上、Pythonでファイルとフォルダを開く方法についてお伝えしました。
これで、アプリケーション、ファイル、フォルダと開くことができるようになりました。
さらに、フルパスもエスケープできますし、ステートメントも多少短く書くことができるようになりました。
次回は、特定のWebページを開く方法についてお伝えしますね。
どうぞお楽しみに!