【python】テキストファイルを読み込む

【python】テキストファイルを読み込む

 pythonでテキストファイルを読み込みます。今回は自作モジュールのyomikomi.pyをmain.pyで実行して読み込みます。

フォルダ構成

test
|-main.py
|-foler
|-test.txt
|-module
|-yomikomi.py

プログラム main.py

#①標準&標準外モジュールのimport
import os
from os import path
import sys


#②自作モジュールの読み込み
#②-1:準備

self_module_folder_name="module"
m_path = path.join(path.dirname((sys.argv[0])),self_module_folder_name)
for x in os.walk(m_path):
    sys.path.append(x[0])

#②-2:import実施
import yomikomi


###③yomikomiでテキスト読み込み####
read_text_foldr_name="folder"
red_fail_name="test.txt"
r_path = path.join(path.dirname((sys.argv[0])),read_text_foldr_name,red_fail_name)
read_data=yomikomi.yomikomi(r_path)
print(read_data)

プログラム yomikomi

import os
from os import path
import codecs 

def yomikomi(r_path):
    r_txt = codecs.open(r_path, 'r', 'UTF-8')
    r_txt_list = []
    for x in r_txt:
        r_txt_list.append(x)
    r_txt.close()
    return r_txt_list
    
    
if __name__ == '__main__':
    rf_name="test.txt"
    rr_path = path.join(path.dirname(__file__),rf_name)
    c=yomikomi(rr_path)
    print(c)

実行結果(main.py)

解説

【main.py】
■2-4行目
自作モジュール以外で必要なモジュールのimport
■10-13行目
自作モジュールのフォルダをpythonに認識させる。
今回は自作モジュールを保存しているフォルダ構造が1階層だけのため有難みはないが、”module”以下に複数のフォルダを持っている場合は自動的に認識できるので便利です。
■16行目
自作モジュールの読み込み
■20-22行目
自作モジュール渡すため、読み込むtextデータのパスを作成する
■23行目
自作モジュールの実行
■24行目
読み込んだテキストデータのprintを実施(実行結果で表示されている内容)
¥r¥nについてはこちらを参考ください。
https://sun-sun-sunday.com/python/python_what_/

【yomikomi.py】
■14-18行目
yomikomi.pyを直接実行(コマンドプロンプロトなどで呼び出し)したときに実行されるが、今回はmain.pyから呼び出しているため実行されない。テスト用の表記ですので無視してください。
■1~3行目
必要なモジュールを読み込み
■5行目
yomikomiという名前で関数を定義。引数は読み込むファイルのパスとする。
■6~10行目
codecsを使用してtxtファイルを読み込みます。読み込み先のファイルをUTF-8で指定してますが、必要に応じてshift_jisなどに変更ください。
■11行目
読み込んだテキストデータを戻り値として返します。

あとがき

私がテキストを読み込むときに使用しているモジュールを紹介しました。文字コードも引数で渡してもいいですが、今のところUTF-8で困っていません。同じモジュールでcsvなどテキストエディタ等で読めるファイルは読み込むことができます。csvの読み書きの場合、エクセルで作成したデータは文字コードがsift_jisになっているはずですので文字化けにご注意ください。