プロジェクト

全般

プロフィール

Python ファイル入出力ライブラリ

色々な形式のファイルを入出力するライブラリについてまとめます。

設定ファイルの読み込み

さまざまな形式のテキストファイルに設定を記述しておき、プログラム実行時に設定ファイルを読み込みその設定に従って処理を行うことが目的です。

settings

Python 3標準搭載ライブラリです。Pythonプログラムと同じディレクトリに、settings.py の名前で設定ファイルを保管します。
プログラムでは、settingsライブラリをimportするだけで、settings.pyの設定内容が参照可能となります。

  • settings.py
    front = 'Alfa'
    center = 'Bravo'
    back = 'Charlie'
    
  • use_settings.py
    import settings
    
    print(f'front = {settings.front}')
    print(f'center= {settings.center}')
    print(f'back  = {settings.back}')
    

configparser

Python 3標準搭載ライブラリです。INI形式のファイルを読み込みます。

  • settings.ini
    [ARRANGE]
    front = Alfa
    center = Bravo
    back = Charlie
    
  • use_configparser.py
    import configparser
    
    config = configparser.ConfigParser()
    config.read('settings.ini', 'UTF-8')
    
    print(f'front={config.get("ARRANGE", "front")}')
    print(f'center={config["ARRANGE"]["center"]}')
    config_arrange = config['ARRANGE']
    print(f'back={config_arrange["back"]}')
    
  • セクションとキーを指定してgetメソッドで取得する方法
    config.get('ARRANGE', 'front')
  • セクションとキーを指定して角括弧で取得する方法
    config['ARRANGE']['center']
  • セクションを指定して取り出してから、キーを指定して取得
    config_arrange = config['ARRANGE']
    config_arrange['back']
    

バイナリファイルの読み書き

バイナリファイルの読み込み

open

open関数に、バイナリファイル読み書きの属性を指定することで、バイナリファイルを読み書きします。

バイナリファイルの読み込み例
file=open('PathToFile', 'rb')

read

バイナリファイル全体を読み込むか、サイズを指定して読み込みます。

data = file.read() # ファイル全体を読み込み
data = file.read(256) # 256バイトを読み込み

close

openしたファイル(リソース)は、読み込みが終了したらcloseする必要があります。

file.close()

読み込み処理中にエラーで例外が送出された際、closeがスキップされないようにする必要があります。
with構文を使うと、処理中にエラーが発生してもファイルがクローズされます。

with open('PathToFile', 'rb') as f:
  data = f.read()

テキストファイルの読み書き

テキストファイルの読み込み

ファイルをテキストモードでopenします。openしたファイルは最後にcloseする必要があります。

import sys
  :
file = open("mywork.txt", "r")
  :
file.close()

closeを忘れやすいこと、処理途中で例外が発生した場合にclose呼び出し文がスキップされる可能性があるので、with構文を使ってopenするのが定番です。

with open("mywork.txt", "r") as file:
   data = file.read()

ファイルを1行単位で読み込むか、まとめて全部を読み込むか

ファイルから1行ずつ読み込む

with open("mywork.txt", "r") as file:
   for line in file:
       print(line)

ファイルから全てを読み込む

with open("mywork.txt", "r") as file:
   print(file.read())

CSV形式ファイルの読み書き


14日前に更新