Pythonで特定のファイルをアプリケーションで開く方法とフォルダを開く方法


open

photo credit: C x 2 Open via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

プログラミング初心者向けにPythonでお仕事で使うプログラムをまとめて起動するツールを作成する方法をお伝えしています。

前回の記事はコチラ。

初心者でも簡単!PythonでWindowsのアプリケーションを起動する方法
Windowsユーザー&プログラミング初心者向けに、Pythonでプログラム起動ツールの作り方をお伝えしています。今回は、Pythonでアプリケーションを起動する方法です。Popen関数を使います。

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関数にリストを渡します。

以下のように記述します。

subprocess.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コマンドは、別ウィンドウでプログラムを実行するコマンドです。

start コマンド、プログラムまたはファイル

実行可能なプログラムを指定するとそのプログラムを実行しますし、ファイルを指定すると関連付けられたアプリケーションが起動します。

PythonのPopen関数では、以下のようにしてそのstartコマンドを実行することができます。

subprocess.Popen([‘start‘, 開くファイル], shell=True)

Windowsの場合は、キーワード引数shellにTrueを指定する必要があります。これにより指定のコマンドはシェルつまりコマンドプロンプトによって実行されることになります。

では、実際にスクリプトを組んで実行してみましょう。

こちらです。

EXCEL = r'C:\Users\ntaka\Dropbox\desktop\Book1.xlsm'
import subprocess
subprocess.Popen(['start', EXCEL], shell=True)

だいぶスッキリしましたね!

既定のプログラムが決まっているファイルに関しては、こちらのほうがよさそうです。

Popen関数でフォルダを開く

ファイルだけではなくて、フォルダを開きたいときもありますね。

フォルダを開くといっても、Windowsでいうとエクスプローラーというアプリケーションでフォルダを開いているだけですので、これまでの応用で実現可能です。

Popen関数で、プログラムファイルにexplorerを指定してあげればよいのです。

subprocess.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ページを開く方法についてお伝えしますね。

【初心者向けPython】既定のブラウザでWebページを開くツールの作り方
プログラミング初心者&Windowsユーザー向けにPythonでお仕事で使うプログラムをまとめて起動する方法についてお伝えしています。今回はPythonで既定のブラウザでWebページを開くプログラムの作り方です。

どうぞお楽しみに!

連載目次:Pythonでいろんなプログラムをまとめて起動をする方法

お仕事でいつも使うアプリケーション、ファイル、フォルダ、Webページなどの「定番セット」を自動で起動するPythonスクリプトを作ります。とっても便利です。
  1. 初心者でも簡単!PythonでWindowsのアプリケーションを起動する方法
  2. Pythonで特定のファイルをアプリケーションで開く方法とフォルダを開く方法
  3. 【初心者向けPython】既定のブラウザでWebページを開くツールの作り方

タイトルとURLをコピーしました