くしだんご

ひとまず気楽に自分らしく

Python備忘録的に…テキストの読み出し

記憶を呼び起こしながら。。

※※基本的に【詳細!Python 3 入門ノート】の本の内容です。※※

研究とかする時に、実験データって.txtとか.csv形式で出てくることが多かったです。
同じディレクトリに入っている複数のファイルに同じ処理を繰り返して、ファイルを開いては閉じるを自動で行うようにするのですが、今回はその前段階。

1. テキストファイル開きましょう

open (file, mode = "r", encoding = None)

# modeは文字通りで「読み込み」「書き込み」とかを指定。
# "r":読みこみ
# "w":書き込み
# "a":書き込み用。ファイルが存在する場合には追記。
# "+":読み込み/書き込みで開く

ほかにもあるけれど、例はこんな感じです。

エンコーディングについては、そもそも何?ってなりますよね。
下のような記事が参考になります。

エンコーディング | フォント用語集 | 文字の手帖 | 株式会社モリサワ

文字のエンコーディングってなあに?IT初心者の疑問を解決! | BREEZE

指定しないと、自分が今使っているプラットフォームと同じになります。

#===例===
file = "./data/hoge.txt"
fileobj = open(file)
text = fileobj.read() # テキストデータ読み込み
fileobj.close() # ファイルを閉じる
print(text)
#======

#==with-asを使用した場合===
file = "./data/hoge.txt"
    with open(file) as fileobj:
        text = fileobj.read()
        print(text)
#======

2. コマンドライン引数を指定して、ファイルを開く場合には…
#===例 comline_open.py ===
import sys
if len(sys.argv) < 2:
    print("読み込みファイルを指定。")
    sys.exit()

file = sys.argv[1]
with open(file) as fileobj:
    text = fileobj.read()
    print(text)
#======

読み出しましょう。わたしはjupyter notebookを使っているので、.pyファイルの読み出しは以下の構文です。

%run comline_open ./data/hoge.txt

3. 1行ずつ読み込む

順に取り出した行の中で、targetで指定した文字をfind()で検索する
===例===
file = "./data/Feeling.txt"
target = "努力"
with open(file, "r", encoding = "utf_8") as fileobj:
    while True:
        try:
            line = next(fileobj)
            if line.find(target) >= 0:
                print(f"「{target}」が見つかりました。")
                print(line, end = "")
                break
        except StopIteration:
                print(f"「{target}」は見つかりませんでした。")
                break
======

こんな感じです。
ではではありがとうございます(/・ω・)/