pythonのconfigparserモジュールを利用して、環境設定情報を外部ファイル化するプログラミングをしていきます。
このプログラムで出来る事
プログラム上に直書きしていた内容を外部ファイルにて管理できるようになります。
例えばログイン情報を環境設定ファイルとして、プログラムファイルとは別に管理することで、プログラムを変えずにユーザーごとに異なるログイン情報を書き換える事が出来る様になります。
pythonのソースコード
作成したソースコードは以下です。
(ソースコード内に、コメントを記載したため、解説は割愛します。)
1 2 3 4 5 6 7 8 9 10 11 12 |
# coding:utf-8 import configparser, os config = configparser.ConfigParser(); # スクリプト実行ディレクトリを絶対パスで取得し、同じフォルダに存在する環境設定ファイル(setting.ini)を取得 config.read(os.path.dirname(os.path.abspath(__file__)) + '\\' + 'setting.ini', encoding='utf-8'); # setteing.iniファイル内の要素を取得 message1 = config['MESSAGE_INFO']['message'] # 取得した要素をコマンドプロンプトに表示 print(message1) |
環境設定ファイル(setting.ini)の内容
1 2 3 4 |
[MESSAGE_INFO] ; ;(セミコロン)または#でコメントを入れる事も可能(文字コードはUTF-8) message = hello!! |
実行結果

事前準備
利用したconfigparserは、pythonのインストール時に一緒に入っているので、事前準備は特に必要ありません。
採用例
以前作成した次のプログラムについて、直書き部分を外部ファイルへ書き出しました。

pythonで複数ブックのExcelシートを1シートに統合(openpyxl)
pythonのopenpyxlモジュールを利用して、複数のExcelの内容を1シートに纏めるプログラミングをしていきます。 このプログラムで出来る事 任意のフォルダ内の複数のExcelファイルを取得して、新たに作成したExcelに転記する作...
プログラムの直書きを外部ファイル化したものは次の様になります。
以前のプログラムとの違いは、以下です。
- 3行目のconfigparserのインポート部分
- 5~11行目の外部ファイルの内容の読み込み部分
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# フォルダ内のExcelファイルの内容を1ファイルにまとめる。 import openpyxl import glob, os, configparser config = configparser.ConfigParser(); # スクリプト実行ディレクトリを絶対パスで取得し、同じフォルダに存在する環境設定ファイル(setting.ini)を取得 config.read(os.path.dirname(os.path.abspath(__file__)) + '\\' + 'setting.ini', encoding='utf-8'); # 定数の読み込み IN_F_NAME = config['FILE_INFO']['IN_FILE'] OUT_NAME = config['FILE_INFO']['OUT_FILE'] # ワークブックを新規作成する。 book = openpyxl.Workbook() # シートの取得 sheet = book.active work_row = 1 # 現在作業中の行 # フォルダ内のファイルを取得 for gb in glob.glob(IN_F_NAME, recursive=True): # 取得したファイル名のプロンプト表示 # print(gb) # ワークシート取得 (worksheets[0]で最初のシートを指定) sheet2 = openpyxl.load_workbook(gb).worksheets[0] # 取得したワークシートの最大行、最大列を取得 max_column = sheet2.max_column max_row = sheet2.max_row # 取得したシートの最大行をプロンプト表示 # print('max_row:' + str(max_row)) # セル内容取得('r in range(1'、'c in range(1' の部分でそれぞれシートの1行目、1列目からの取得を示す。) for r in range(1, max_row+1): for c in range(1, max_column+1): # セル内容のコピー sheet.cell(row=work_row,column=c).value = sheet2.cell(row=r,column=c).value work_row+=1 # ファイル保存(プログラム実行したフォルダに新規にファイルが作成) book.save(os.path.dirname(os.path.abspath(__file__)) + '\\' + OUT_NAME) |
環境設定ファイル(setting.ini)の内容
1 2 3 |
[FILE_INFO] IN_FILE = [フォルダ]/*.xlsx OUT_FILE = [まとめ先のファイル名].xlsx |
このようにすることで、環境設定ファイル(setting.ini)の書き換えだけで(プログラムの変更なしに)、まとめ元のファイル情報やまとめ先のファイル名の任意の変更が可能です。
コメント