Python | CSVファイルへの書き出し方法
公開日:2021/6/8
Pythonには,コードを記述することによってCSVファイル内に書き出す方法がある.以下「"open"と"close"を利用したファイルへの書き出し」と「"with"を利用したファイルへの書き出し」の2つの構成でファイルの書き出し方法を記す.
◆実施環境
Python 3.8.8
■準備
現在以下URL(カレントディレクトリ)で開発しているので,”210517_python development”フォルダの直下に”test”のいう名のフォルダを作成した.
“PS C:\Users\shiro\Desktop\210517_python development>”
CSVファイルを作成し,書き出すためのファイルパスは以下になる.(準備段階ではCSVファイルは作成されていない)
“test/writing.csv”
- “open"と"close"を利用したファイルへの書き出し
ファイルパスと以下(a)~(d)の関数を用いてファイルを様々な方法で書き出すことができる.
(a) write: ”()”に文字列を取り,データを書き出す.
(b) writelines: 各データが連結されて書き出される.
(c) open: “()”には以下主要な引数を入力可能.
・filename: テキストファイルやCSVファイルなどのファイルオブジェクト
・mode: 読み込みには”r”,上書きには”w”,追記には”a”などがある."w"と"a"どちらの場合でもファイルがない場合は新規に作成される.
・compresslevel: modeが”w” or “a”の場合に圧縮レベルを1~9まで指定できる
・encoding: “utf-8″や”shift_jis”などを指定できる
・errors: エラーを返す.デフォルトは”strict”, 他に”replace”, “ignore”などがある
・newline: 改行を指定可能.”None”, 「”」, “\n”, “\r”, “\r\n”を指定できる
(d) close: “open"によりファイルを開き,書き出した後は,"close"によりファイルを閉じる.ファイルを閉じると,余計なメモリを消費するのを防ぐ.
以下に上記関数を用いたファイルの書き出し構文を記述する.
# 1の処理(writeにて書き出し)
fpath = 'test/writing.csv'
greeting = 'Hello World\nI am Jotaro' # 改行には"\n"を利用
f = open(fpath,mode='w',encoding='utf-8')
f.write(greeting) # testフォルダの中にcsvが作成される
f.close() # "open"の後は"close"を利用し,ファイルを閉じる
# 2の処理(writeにて書き出し,その後上書き)
fpath = 'test/writing.csv'
greeting1 = 'Hello World\nI am Jotaro\n'
greeting2 = 'Nice to meet you'
f = open(fpath,mode='w',encoding='utf-8')
f.write(greeting1) # testフォルダの中にcsvが作成される
f.close()
f = open(fpath,mode='w',encoding='utf-8') # 'w'により上書き
f.write(greeting2)
f.close()
# 3の処理(writeにて書き出し,その後追記)
fpath = 'test/writing.csv'
greeting1 = 'Hello World\nI am Jotaro\n'
greeting2 = 'Nice to meet you'
f = open(fpath,mode='w',encoding='utf-8')
f.write(greeting1) # testフォルダの中にcsvが作成される
f.close()
f = open(fpath,mode='a',encoding='utf-8') # 'a'により追記
f.write(greeting2)
f.close()
# 4の処理(writelinesにて書き出し.list内"0")
fpath = 'test/writing.csv'
list1 = [
['Hello World\nI am Jotaro'],
['Nice to meet you']
]
f = open(fpath,mode='w',encoding='utf-8')
f.writelines(list1[0])
f.close()
# 5の処理(writelinesにて書き出し.list内"1")
fpath = 'test/writing.csv'
list1 = [
['Hello World\nI am Jotaro'],
['Nice to meet you']
]
f = open(fpath,mode='w',encoding='utf-8')
f.writelines(list1[1])
f.close()
# 6の処理(writelinesとforにて書き出し.list内の値すべて)
fpath = 'test/writing.csv'
list1 = [
['Hello World\nI am Jotaro'],
['Nice to meet you']
]
f = open(fpath,mode='w',encoding='utf-8')
for x in list1:
f.writelines(','.join(x))
f.writelines('\n')
f.close()
■実行結果
# 1の結果(CSVファイルに以下が記述)
Hello World
I am Jotaro
# 2の結果(CSVファイルに以下が記述)
Nice to meet you
# 3の結果(CSVファイルに以下が記述)
Hello World
I am Jotaro
Nice to meet you
# 4の結果(CSVファイルに以下が記述)
Hello World
I am Jotaro
# 5の結果(CSVファイルに以下が記述)
Nice to meet you
# 6の結果(CSVファイルに以下が記述)
Hello World
I am Jotaro
Nice to meet you
- “with"を利用したファイルへの書き出し
ファイルの書き出しに”open”を用いると,ファイルを閉じる”close”が必須になる.だが,”with”を利用してファイルを書き出すと,自動的にファイルは閉じる.以下に”with”と”as”を用いた構文を記述する.
# 1の処理
fpath = 'test/writing.csv'
list1 = [
['Hello World\nI am Jotaro'],
['Nice to meet you']
]
with open(fpath,mode='w',encoding='utf-8') as f: # csvファイルが作成される
for x in list1:
f.write(','.join(x))
f.write('\n')
■実行結果
# 1の結果(CSVファイルに以下が記述)
Hello World
I am Jotaro
Nice to meet you
以上