[Python] IOを利用してCSVファイルを扱う方法
こんにちは。明月です。
この投稿はPythonでIOを利用してCSVファイルを扱う方法に関する説明です。
Pythonはローカルでよく使うスクリプト言語ですから様々なファイルを扱うライブラリがよく整理しているらしいです。
他のプログラム言語だってできないことではありませんが、個人的にPythonが環境ファイルらしいなデータを作ることでは便利ではないかと思います。
CSVファイルはデータベースや様々テーブル形式のデータでよく使う形式です。
# csvモジュールをimportする。
import csv
# リストタイプのデータ(中はタプルで設定したが、リストタイプでも関係ない。)
data = [('Tester','1'),('Who','2'),('Tom','3')]
# ファイルを開く。(CSVの内部でwritelineの関数を使いらしいが、newlineを設定しなければcsvファイルで改行になる。)
with open('csvexample.csv','wt', newline = '') as handle:
# ファイルリソースをcsvモジュールのwrtier関数に入れる。
csv_out = csv.writer(handle)
# dataをcsvファイルに書く。(この関数ですべてのリストデータをCSVファイルに作成する。)
csv_out.writerows(data)
# writerow関数は一行ずつに作成する。つまり、条件式を入れられるCSVファイルを作成すること可能。
#for item in data:
# csv_out.writerow(item)
CSVファイルがカンマ(,)と改行の区分で作られました。
今回はCSVファイルを読み込んで使いましょう。
# csvモジュールをimportする。
import csv
# ファイルを読み込む。
with open('csvexample.csv','rt') as handle:
# ファイルリソースをcsvモジュールのreader関数に入れる。
csv_in = csv.reader(handle)
# コンプリヘンションを通ってデータをリスト化する。
data = [row for row in csv_in]
# コンソール出力
print(data)
ファイルのコンマ(,)と改行区分でデータを読み込んでコンソールに出力しました。
CSVファイルにヘッダーが必要な場合があります。
ディクショナリタイプを利用すればcsvファイルの一行目はデータのヘッダーで使えます。
# csvモジュールをimportする。
import csv
# データはリストタイプだが、中はタプルではなくディクショナリタイプになっている。
data = [{'name':'Tester','no':1},{'name':'Who','no':2},{'name':'Tom','no':3}]
# ファイルを開く。(CSVの内部でwritelineの関数を使いらしいが、newlineを設定しなければcsvファイルで改行になる。)
with open('csvexample.csv','wt', newline = '') as handle:
# ファイルリソースをcsvモジュールのDictWriter関数に入れる。ディクショナリタイプでCSVに作るデータをリストタイプに指定する。
csv_out = csv.DictWriter(handle, ['name', 'no'])
# ヘッダーを作る。(省略すればヘッダーを生成しない。)
csv_out.writeheader()
# dataをcsvファイルで作る。(この関数ですべてのリストをCSVファイルに作る。)
csv_out.writerows(data)
# writerow関数は一行ずつに作成する。つまり、条件式を入れられるCSVファイルを作成すること可能。
#for item in data:
# csv_out.writerow(item)
ディクショナリタイプになっているリストでCSVファイルを作成しました。そして一行目はheaderとしてタイトルを入れました。
今回はまたCSVファイルをディレクトリタイプで読み込みます。
# csvモジュールをimportする。
import csv
# ファイルを読み込む。
with open('csvexample.csv','rt') as handle:
# ファイルリソースをcsvモジュールのDictReader関数に入れる。
csv_in = csv.DictReader(handle)
# コンプリヘンションを通ってデータをリスト化する。
data = [row for row in csv_in]
# コンソール出力
print(data)
結果はOrderDictタイプで出力されます。一般ディクショナリタイプではないですが、ディクショナリの種類なのでディクショナリタイプでCSVファイルを読み込みました。
ここまでPythonでIOを利用してCSVファイルを扱う方法に関する説明でした。
ご不明なところや間違いところがあればコメントしてください。
「Devlopment note / Python」の他投稿
- [Python] Redisデータベースに接続して使い方2022/02/21 18:23:49
- [Python] Seleniumライブラリを使う方法(自動ウェブテスト、ウェブスクレイピング)2021/10/25 19:29:00
- [Python] メール(smtplib)を送信する方法2020/07/27 18:38:43
- [Python] HttpConnection(requestsモジュール)でウェブサーバーで接続する方法2020/07/20 14:41:51
- [Python] Excel(openpyxl)を扱う方法2020/07/16 16:40:31
- [Python] ファイル圧縮、解凍(zipfile)する方法2020/07/14 19:14:22
- [Python] Apache cgiでPythonを使う方法2020/07/09 19:58:19
- [Python] Web serverを起動する方法(http.server)2020/07/09 00:13:13
- [Python] WebSocketを使う方法2020/07/07 17:29:18
- [Python] PythonとJavaのソケット通信する方法2020/07/03 18:35:50
- [Python] PythonとC#のソケット通信2020/07/01 19:28:22
- [Python] INI(環境設定ファイル)を扱う方法2020/06/30 18:26:01
- [Python] Jsonを扱う方法2020/06/29 19:18:15
- [Python] XMLファイルを扱う方法2020/06/26 19:18:14
- [Python] IOを利用してCSVファイルを扱う方法2020/06/25 18:20:30
最新投稿
- check2024/04/10 19:03:53
- [Java] 64.Spring bootとReactを連結する方法(Buildする方法)2022/03/25 21:02:18
- [Javascript] Node.jsをインストールしてReactを使う方法2022/03/23 18:01:34
- [Java] 63. Spring bootでcronスケジューラとComponentアノテーション2022/03/16 18:57:30
- [Java] 62. Spring bootでWeb-Filterを設定する方法(Spring Security)2022/03/15 22:16:37
- [Java] JWT(Json Web Token)を発行、確認する方法2022/03/14 19:12:58
- [Java] 61. Spring bootでRedisデータベースを利用してセッションクラスタリング設定する方法2022/03/01 18:20:52
- [Java] 60. Spring bootでApacheの連結とロードバランシングを設定する方法2022/02/28 18:45:48
- [Java] 59. Spring bootのJPAでEntityManagerを使い方2022/02/25 18:27:48
- [Java] 58. EclipseでSpring bootのJPAを設定する方法2022/02/23 18:11:10
- [Java] 57. EclipseでSpring bootを設定する方法2022/02/22 19:04:49
- [Python] Redisデータベースに接続して使い方2022/02/21 18:23:49
- [Java] Redisデータベースを接続して使い方(Jedisライブラリ)2022/02/16 18:13:17
- [C#] Redisのデータベースを接続して使い方2022/02/15 18:46:09
- [CentOS] Redisデータベースをインストールする方法とコマンドを使い方2022/02/14 18:33:07