こんにちは。とりりんです。
今回は、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には色々なファイルの読み書き方があるので、何が何だかわからなくなります…。
是非みなさんも使ってみてください。
↓とりりんを応援して頂けると嬉しいです!↓
にほんブログ村
コメント