- Pythonを使った業務改善の例
- Pythonで印刷を自動化する方法
- win32apiの使い方
- フォルダ内のファイルを全て取得する方法
ファイルを一つ一つ印刷するのって時間掛かるなー
それもプログラムで自動でやれるよー
本当に!?
実際に僕がPythonを使って作った自動印刷アプリの作り方をご紹介します。
ソースコードも載せているのでコピペして使ってください!
- ファイル印刷の手間を減らしたい人
- Pythonを使った業務効率化事例を知りたい人
- Pythonでwin32apiを使う方法を知りたい人
今回作った自動印刷アプリ
今回作ったのはどんなアプリ?
今回作ったアプリは以下の通りのものです。
今回作ったアプリ
あるフォルダ内のファイルを全部印刷してくれるアプリ
フォルダに印刷したいファイルを全部入れてアプリを起動すると全て印刷されます!
アプリの動作
今回作ったアプリのソースコードと同じフォルダに「印刷用」というフォルダを作ります。
一度作ってしまえば2回目以降はそのままでOKです。
印刷したいファイルを全て「印刷用」フォルダに入れましょう。
コマンドプロンプトに「python 自動印刷アプリのファイル名」を打ち込みます。
今回はアドレス管理アプリの名前は「auto_print.py」なので打ち込むコマンドは以下の通りです。
打ち込むコマンド
アプリを起動すると自動でフォルダ内のファイルを全て読み取り、印刷してくれます。
後はプリンターの前に行けばOKです。
自動印刷アプリのソースコードとライブラリ
どうやったら作れるの?
今回作ったアプリのソースコード全文と各要素の動作について説明します。
動作環境
動作環境
OS:Windows10
バージョン:Python 3.8
ソースコード全文
今回のソースコードは以下の通りです。
ソースコード
#!フォルダ内ファイル自動印刷 #!python3 import win32api import sys import os import time #******* Function ************************************************************************************************************* def auto_print(path): if __name__ == '__main__': win32api.ShellExecute(0,"print",path,None,".",0) print("Printed:"+path) def file_check(path): if os.path.isdir(path): files = os.listdir(path) for file in files: file_check(path+"\\"+file) else: auto_print(path) time.sleep(3) #****** Main ******************************************************************************************************************* print_path = r"./印刷用" file_check(print_path) print("Process finished")
使用したライブラリ
今回使用したライブラリは以下の通りです。
ライブラリ
import win32api #プリンター起動用ライブラリ import sys #システム操作用ライブラリ import os #OS操作用ライブラリ import time #時間カウント用ライブラリ
各種ライブラリは事前に以下のコマンドを入力しておくことでインストールできます。
win32apiのインストール
pip install win32api
timeのインストール
pip install time
印刷処理の実行
以下の部分で印刷の処理を行います。
何度も同じ操作をする為、関数として定義しています。
印刷処理部分
def auto_print(path): if __name__ == '__main__': win32api.ShellExecute(0,"print",path,None,".",0) print("Printed:"+path)
ここで、 win32api.ShellExecute を使うことで今回印刷が可能になりました。
win32api.ShellExecuteというのは以下のようなものです。
win32api.ShellExecute とは?
指定されたファイルに対し、特定の操作を実施するもの
例として以下のような作業が可能です。
win32api.ShellExecute で出来ること
- エディタを起動する
- エクスプローラーを起動する
- ファイルを開く
- 印刷する
- プロパティを表示する
詳しくはこちらを参照してください↓
参考
今回は印刷を使っています。
フォルダ内の全ファイル読み込み
以下の部分でフォルダ内のファイルを全て確認します。
ファイル読み込み部分
def file_check(path): if os.path.isdir(path): files = os.listdir(path) for file in files: file_check(path+"\\"+file) else: auto_print(path) time.sleep(3)
ここも関数の形で定義しています。
以下のようなフローチャートで動作します。
まずはフォルダ内を見て今見ている対象がファイルなのかフォルダなのか確認します。
フォルダであればさらにその中身を同じように全てチェックします。
ファイルであれば上で書いた関数を呼び出して印刷します。
印刷後、PCが処理する時間を置かないと印刷順がごちゃごちゃになってしまいます。
その為、time.sleepで3秒間をあけるようにしています。
まとめ
これでファイル一つ一つ印刷ボタンを押す手間が省けました。
地味だけど結構効果あった!
案外簡単な構造で作ることが出来ますよ!
わざわざ一つ一つ印刷するような作業はこれでおさらばしましょう。
\プログラミングをマンツーマンで学べる!/
今なら14日間返金保証中!
その他のPythonによる業務効率化事例は以下の記事で紹介します。↓
今回の内容は以上になります。
ここまで読んでくださりありがとうございました。
コメント