カンマ以外も!csvモジュールを使ってファイルを処理しよう!

Python

こんにちは。とりりんです。

今回は、import csvを用いたPythonのファイル読み込みについて紹介します。

大したことないのによく忘れて調べちゃうんですよね。

…ということで、備忘録みたいな感じで残しておきます。

  • ファイルを読み込みたい!
  • カンマ区切りでファイルを書き込みたい!
  • スペース区切りでもファイルを読み書きしたい!
スポンサーリンク



ファイルOpen関連

with openを使用する場合

まずはwith openを使ってファイルを開きます。

withの中でファイルの処理ができます。

  import csv
  
  with open("read.csv", "r") as fr, open("write1.csv", "w") as fw:
    reader = csv.reader(fr)
    writer = csv.writer(fw)
    for line in reader:
        writer.writerow(line)

読み込みファイル、書き込みファイルをそれぞれfr, fwと変数において、ファイルを開きます。

その後、readerの数だけ繰り返し、1行ずつ書き込みます。

with構文の特徴はこんな感じです。

特徴
メリット ファイルを閉じる処理が不要
デメリット with構文内でないとファイル処理ができない

個人的にはいちいちcloseを気にしなくて良くなるので嬉しいですね。

with openを使わない場合

withなんか嫌!という方にはこちらがオススメ。

変数名=open(…)という形でファイルを開きます。

  fr = open("read.csv", "r")
  reader = csv.reader(fr)
  fw = open("write2.csv", "w")
  writer = csv.writer(fw)
  for line in reader:
      writer.writerow(line)
  fr.close()
  fw.close()

処理はwith構文バージョンとほぼ同じです。

異なる点は一箇所で、最後の2行にf.close()を追加してファイルを閉じる処理を追加しています。

ほんの小さい処理なら気にしなくても良いのですが、厳密に実行するならファイルを閉じる処理は必須です。

必ず忘れないようにしましょう。

ということで、withを使わずにファイル処理するメリットとデメリットはこんな感じ。

特徴
メリット 基本的にはどこでもファイル処理が可能
デメリット ファイルを閉じる処理が必要

スポンサーリンク

カンマ区切りは嫌!

csvということはカンマ区切りのファイル以外は無理!と思うかもしれませんが、そんなことはありません。

csvと言いながら、引数にdelimiterを使用することで、区切り文字を指定できるのです。

スペース区切りにした例を以下に示します。

  fr = open("read.txt", "r")
  reader = csv.reader(fr, delimiter=' ')
  fw = open("write.txt", "w")
  writer = csv.writer(fw, delimiter=' ')
  for line in reader:
      writer.writerow(line)
  fr.close()
  fw.close()

今までは引数delimiterを使ってなかったので、デフォルトのカンマ区切りを選択していただけです。

これを使用することで、カンマ区切りのファイルを読み込み、スペース区切りで出力なども可能になります。

便利なので使ってみてください。

まとめ

今回はcsvモジュールを使ったPythonのファイル関連のお話をしました。

カンマ区切りでなくてもファイルを処理できるので、便利ですね。

Pythonには色々なファイルの読み書き方があるので、何が何だかわからなくなります…。

是非みなさんも使ってみてください。

↓とりりんを応援して頂けると嬉しいです!↓
にほんブログ村 投資ブログ お金(投資)へ

にほんブログ村

スポンサーリンク


コメント

タイトルとURLをコピーしました