0
0

More than 1 year has passed since last update.

40代おっさんPythonを勉強する(プレーンテキストファイルの読み書き編)

Posted at

本記事について

この記事はプログラミング初学者の私が学んでいく中でわからない単語や概要を分かりやすくまとめたものです。
もし不正などありましたらコメントにてお知らせいただければ幸いです。

基本のファイル入出力

  • ファイルの読み書き
tobj = open(filename, mode)
  • fobjはopen()関数が返したファイルオブジェクト
  • filenameはファイル名、場所がわかるようにパスも必要な場合がある
  • modeはファイルのタイプや操作モード
    • 第一文字
      • r=>読み出し、ファイルが存在しない場合はエラー
      • w=>書き込み、ファイルが存在しない場合は新しく作り、存在する場合は上書き
      • x=>書き込み、ファイルが存在する場合はエラー(上書きミスを防ぐため)
      • a=>書き込み、ファイルの後ろに追記
    • 第二文字
      • t=>テキスト
      • b=>バイナリ
  • デフォルトはrt、テキストの読み出し
  • 最後にファイルを閉じる必要がある

ファイルの書き込み

text  = """aaa
bbb
ccc
ddd"""

f = open('abcd.txt', 'w', encoding="utf-8") # ファイルを開く
#  encoding="utf-8", "shift_jis", "euc_jp"
f.write(text) # 書き込み
f.close() # 閉じる
  • OSによってデファクトの文字コードが変わることがあるの注意
  • ここではencoding="utf-8"を指定している

ファイルの読み出し

f = open('abcd.txt', 'r') # もし文字コードが違う場合は後ろに加えても良い
texts = f.read() # 一気でファイルを読み出す、ファイルが大きい場合はメモリ不足の注意が必要
f.close()
print(texts)
  • 一気で読み込むのは無理なら、イテレータを使って、一行ずつを読み出す
f = open('abcd.txt', 'r')
for line in f: # 毎回一行だけ
    line = line.split() # 行末の改行を消す
    print(line) # 改行が入る
f.close()
  • 一気で一行ずつのリストを返すのもできる
f = open('abcd.txt', 'r')
texts = f.readlines() # ファイルが大きい場合はメモリの注意が必要
f.close()
print(texts)

withによる自動的クローズ

  • 開いたファイルを閉じ忘れると、参照されなくなるまでは開いたままで、メモリの無駄にもなる
  • 共同のファイルだったら、他人が書き込むことができなくなる可能性もある
  • それを防ぐために、コンテキストマネージャーを使って、自動的に閉じることができる
with open('abcd.txt', 'r') as f:
    texts = f.readlines()
#  ファイルは自動的に閉じる
#  そのあと保存されたテキストを処理してもよい
#  ファイルが閉じてあとでf.read()をするとエラーになる
for line in texts:
    line = line.strip()
    print(line)

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0