Pythonでデータファイルを書き出す方法

Pythonでデータファイルを書き出す方法

データファイルの読み込みはできるけど、データファイルとして書き出す方法がわからない人はいませんか?
この記事では、Pythonを使ってデータファイルを書き出す方法を具体的に解説していきます。

動作環境
macOS Catalina(10.15.3), python3.7.6, Atomエディタ1.44.0

書き出すだけならこれだけでいい

ファイルを書き出したいならopen()関数とwriteを使えば簡単にできます。
open()関数は読み込みの際にはr(読み込みモード)で使いますが、書き込みではw(書き込みモード)で使います。
いきなりですが、サンプルコードを以下に載せます。

サンプルコード

outfile = open('AvrgTmp_Kyoto2018.dat', 'w')

outfile.write('# averaged temperature in 2018 @ Kyoto city\n')
outfile.write('# 01: month  02: averaged temperature in daytime\n')
outfile.write('1 3.9\n')
outfile.write('2 4.4\n')
outfile.write('3 10.9\n')
outfile.write('4 16.4\n')
outfile.write('5 20.0\n')
outfile.write('6 23.4\n')
outfile.write('7 29.8\n')
outfile.write('8 29.5\n')
outfile.write('9 23.6\n')
outfile.write('10 18.7\n')
outfile.write('11 13.5\n')
outfile.write('12 8.2\n')

outfile.close()

コードの解説

outfile = open('AvrgTmp_Kyoto2018.dat', 'w')

AvrgTmp_Kyoto2018.datは出力するファイル名です。自分の好きな名前にしても問題ありません。
このコードで何をしているかというと、outfileという名前の何も書かれていないキャンバスを作っています。
この後で、キャンバスに何を書くかを指定します。(outfileは勝手に名付けているだけですので、名前は自由に決めてください。)

outfile.write('xxxx')

outfilexxxxを書く」という意味のコードです。上のサンプルコードでは、行の末尾に改行を加えたいので\nを書いてます。

outfile.close()

openしたものはcloseしましょう。

実際にプログラムを動かしてみよう

まずは、Desktop/Dr.code/Python/data-analysis/Output_Fileというフォルダを作り、その中にoutput_file.pyという名前の上記サンプルコードが書かれたファイルを保存します。

次に、ターミナルを開いて、cdでcwdをDesktop/Dr.code/Python/data-analysis/Output_Fileにします。
python output_file.pyと入力すれば、プログラムは起動します。

出力結果

プログラムが正常に起動すると、output_file.pyと同じ階層(フォルダ)にAvrgTmp_Kyoto2018.dat という名前のファイルが書き出されているはずです。開いて中身を確認すると、以下のようになっているはずです。

# averaged temperature in 2018 @ Kyoto city
# 01: month  02: averaged temperature in the daytime
1 3.9
2 4.4
3 10.9
4 16.4
5 20.0
6 23.4
7 29.8
8 29.5
9 23.6
10 18.7
11 13.5
12 8.2

CSVファイルの書き出し

csvファイルとは Comma-Separated Valuesファイルの略で、コンマ区切りされたファイルのことです。
よって、スペース区切りだったところをコンマ区切りに変更すれば簡単にcsvファイルを書き出せます。

outfile = open('AvrgTmp_Kyoto2018.csv', 'w')

outfile.write('# averaged temperature in 2018 @ Kyoto city\n')
outfile.write('# 01: month  02: averaged temperature in daytime\n')
outfile.write('1,3.9\n')
outfile.write('2,4.4\n')
outfile.write('3,10.9\n')
outfile.write('4,16.4\n')
outfile.write('5,20.0\n')
outfile.write('6,23.4\n')
outfile.write('7,29.8\n')
outfile.write('8,29.5\n')
outfile.write('9,23.6\n')
outfile.write('10,18.7\n')
outfile.write('11,13.5\n')
outfile.write('12,8.2\n')

outfile.close()

(ちょっと応用)with構文を使ったファイルの書き出し

with構文を使うとcloseをわざわざ書く必要がなくなるので、以下のようにコンパクトに記述することができます。

with open('AvrgTmp_Kyoto2018.csv', 'w') as outfile:
    outfile.write('# averaged temperature in 2018 @ Kyoto city\n')
    outfile.write('# 01: month  02: averaged temperature in daytime\n')
    outfile.write('1,3.9\n')
    outfile.write('2,4.4\n')
    outfile.write('3,10.9\n')
    outfile.write('4,16.4\n')
    outfile.write('5,20.0\n')
    outfile.write('6,23.4\n')
    outfile.write('7,29.8\n')
    outfile.write('8,29.5\n')
    outfile.write('9,23.6\n')
    outfile.write('10,18.7\n')
    outfile.write('11,13.5\n')
    outfile.write('12,8.2\n')

pythonに慣れてきたらぜひwith構文を使ってみましょう!