超初心者向けPython入門講座

仕事の効率化などにpythonを使いたい!けど何から始めらばよいか分からない、といった初心者の方向けに、pythonの導入から実用的な使い方まで、極力分かりやすくまとめたサイトです。

python Python初心者講座

第13章 Pythonでテキストファイル・csvファイルへの書き出しをしてみよう(write)

投稿日:2020-04-26 更新日:

この章では、「テキストファイル」と「csvファイル」への書き込みについて解説したいと思います。Pythonで行った処理を保存する方法になりますので、しっかりと使えるようになりましょう!

解説内容

 

1.テキストファイルへの書き出し(上書き)

まずは、「テキストファイル」への書き出し(上書き)について解説します。ここでは、「直接入力」「listを入力」の2つの方法を解説します。

1.出力を直接入力

まずは、下のコードをテキストファイルを作りたい場所(作業場所)に保存し、実行してください。

f = open('out.txt', 'w')
f.write('あいうえお')
f.write('12345')
f.close()

すると、コードと同じ場所に「out.txt」というテキストファイルができましたね!では、1行ずつ解説していきます。

 

まず、1行目の

f = open('out.txt', 'w')

ですが、基本的に「テキストファイルの読み込み」の時と同様に、「open」を使って「out.txt」というファイルを開く、という意味になります。

ただし、読み込みの時に「r」になっていた部分が、今回は「w」になっていますね。これが、出力ファイルの目印になります。

そして「open」で「w」を使うと「ファイルが無いなら作り、ファイルがあれば上書き」という意味になります。(※重要です)

 

 

では次に2,3行目についてですが、テキストファイルへの書き込みには「ファイル.write(‘書き込みたい内容’)」という形をとります。今回だと以下の形ですね。

f.write('あいうえお')

※ちなみに、「‘書き込みたい内容’」は「変数」を使うこともできます。下の形です。

data = 'あいうえお'
f.write(data)

 

ここで「out.txt」を確認すると、下のように「あいうえお12345」と出力されており、改行が入っていないことが分かります。

 

もし入力ごとに改行したかったら、改行コードである「\n」改行する場所につけることで改行できます。今回だと以下のようになります。

f.write('あいうえお/n')
f.write('12345')

※バックスラッシュは、フォントによって「¥」に変化しますが、特に問題ありません。

「あいうえお」の後ろに改行コードを入れることで、上のように改行することができました!

 

 

最後の行は、「テキストファイルの読み込み」の時と同様に、「openで開いたファイルはcloseで閉じる」を行っているだけです。

この操作は、「open」でファイルを開いたら必ず行ってください!

 

2.出力をlistで渡す方法

次に、出力する値を「list」で渡す方法について解説したいと思います。

「list」を渡す場合、「writelines」というものを使います。基本的な使い方は「write」の時と同じで、出力に渡すものが「list」になります。

では、実際にコードを実行してみましょう。

f = open('out2.txt', 'w')
data = ['あいうえお','12345']
f.writelines(data)
f.close()

実行すると、「write」を使用した時と同じように、「out2.txt」に「あいうえお12345」と出力されましたね。

 

ただし、「list」を出力する場合にも、改行されていないという問題が生じています。

そこで、今回も改行コード「\n」を使用することで改行させることができます。今回だと、「list」である「data」を下のように変えれば良いです。

data = ['あいうえお\n','12345']

改行コードを入れて実行することで、下のようにちゃんと改行することができます!

Point
  • 「ファイル.write(‘書き込みたい内容’)」という形を使う。
  • 改行したい場合は改行コードである「\n」を改行する場所につける。
  • 「list」を渡す場合「writelines」を使う。

 

2.テキストファイルへの書き出し(追記)

先ほどの出力方法は、「ファイルの新規作成 or 上書き」の処理でしたが、次は「ファイルの新規作成 or 追記」の方法について解説したいと思います。

結論から言うと、openでファイルを開くときに「a」を使うと上書きすることができます。では、実際にコードを動かしてみましょう。

f = open('out3.txt', 'a')
data = ['あいうえお\n','12345\n']
f.writelines(data)
f.close()

これは「2.出力をlistで渡す方法」のコードをベースに、「open」で開く際に「w」ではなく「a」を使ったものです。

 

では、このコードを2回実行してください。すると、1回目は「out3.txt」が作成され、2回目はそのファイルに「追記」されたと思います。

ちなみに、3回、4回と繰り返し実行するたびに下に追記されていきます。

つまり、「open」を使用する際、ファイルを上書きしたい場合は「w」、ファイルを追記したい場合は「a」を使用するということです。

Point
  • ファイルを上書きしたい場合はopen時に「w」を使用
  • ファイルを追記したい場合はopen時に「a」を使用

 

3.csvファイルへの書き出し(list)

最後に「list」のcsvへの書き出しについて解説したいと思います。

※csvの出力を直接入力する場合は、テキストファイルの「1.出力を直接入力」と同じコードで、ファイルの拡張子を「csv」にすれば良いです。

 

csvの出力では、読み込みの時と同様に「csv」というライブラリを使用します。そして出力の場合、「csv」ライブラリの中でも「csv.writer」というものを使用します。

1.1次元のlistを出力

csvへの出力では、「list」の次元によって使用するものが変わります。

  • 1次元 = 「writerow」
  • 2次元 = 「writerows」

まずは1次元の「writerow」について解説していきます!

下のコードを実行してください。

import csv
f = open('out.csv', 'w')
data = ['あいうえお','12345']
writer = csv.writer(f)
writer.writerow(data)
f.close()

すると、「out.csv」というcsvファイルができ、エクセルで開くと下のようになります。

 

では、1行ずつ解説していきますね。

まず1行目と2行目では、それぞれ「ライブラリのインポート」「書き出しファイルの読み込み」を行っています。この辺りは大丈夫ですね!

次に3行目では、1次元の「list」データを作成しています。(次元については後述)

 

重要なのは4、5行目ですが、csvファイルへの書き込みを行う際「writer = csv.writer(ファイル)」「writer.writerow(出力するlist)」という形をとります!

今回の場合、ファイルは「f」、出力するlistは「data」ですね。

writer = csv.writer(f)
writer.writerow(data)

※ここは形を覚えてください!

(この辺りを詳しく解説するにはクラスオブジェクトについての解説が必要なのですが、ややこしくなるためここでの説明は割愛します。気になった方は「Python クラス オブジェクト」などで検索してみてください。)

これで、csvへの1次元の「list」の出力ができました!

 

2.2次元のlistを出力

次に、2次元のlistの出力についてです。

まず、listの次元について軽く説明します。実は「list」は、listの中にさらにlistを作ることができます

具体的には以下のようになります。

data1 = [1,2]
data2 = [[1,2],[3,4],[5,6]]

 ここで、data1は1次元data2が2次元となります。

次元という話がでると難しく感じるかもしれませんが、行か列のみが1次元、行と列があるのが2次元と考えてください!(下の図)

 

さて、では2次元のlistの出力を説明したいと思います。基本的に1次元と同様で、渡すlistが2次元になり、「writerows」を使うだけです!

import csv
f = open('out2.csv', 'w')
data = [['あいうえお','12345'],['かきくけこ','678910']]
writer = csv.writer(f)
writer.writerows(data)
f.close()

すると、下のようにcsvファイルに出力できます!

ただ、なぜか空白の行ができてしまっていますね。これを削除するためには「open」を使う際に「newline=”」を追加します!

import csv
f = open('out2.csv', 'w', newline='')
data = [['あいうえお','12345'],['かきくけこ','678910']]
writer = csv.writer(f)
writer.writerows(data)
f.close()

これで完成です。csvでの出力を行う際は、openで「newline=”」を使う!と覚えておいてください。

 

なお、numpyやpandasのcsvへの書き出しについては「Pythonでのcsvファイルへの書き出し方法について」にて解説していますので、そちらをご覧ください。

Point
  • 「csv」ライブラリの「csv.writer」というものを使用する。
  • 1次元 への出力は「writerow」
  • 2次元 への出力は「writerows」
  • 「writer = csv.writer(ファイル)」と「writer.writerow(出力するlist)」という形で使う。
  • 行間の空白を防ぐには、「open」使用時に「newline=”」を使う。

 

4.まとめ

さて、今回はPythonを用いたファイルへの出力について解説しました。この他、numpyやpandasの出力については、本サイトの「Pythonでのcsvファイルへの書き出し方法について」で解説していますので、そちらをご覧ください。

 

長くなってしまいましたが、これらが使えると結果を保存してほかの人に渡したりも出来ますので、しっかり使えるようになりましょう!

>>前回:第12章 Pythonでcsvファイルを読み込んでみよう

>>次回:第14章 Pythonでフォルダを作成してみよう

スポンサーリンク




スポンサーリンク




-python, Python初心者講座
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

第4章 Pythonのループ処理(for)を使ってみよう

この章では、いよいよ「ループ処理」を使っていこうと思います! 解説内容 ループ処理って何? ループ処理を使ってみよう ループ処理の範囲 rangeによるループ処理の応用 listを用いたループ処理   …

第2章 Pythonを使ってみよう

前回はPythonのダウンロードについて解説しました。この章では、さっそくPythonを使ってみましょう! 解説内容 Anaconda Promptを起動しよう Pythonで文字を出力しよう(pri …

Pandasとnumpyの違いや変換について(どっちを使えばいいの?)

今回は、Pyhonでデータを扱う際に使えるととても便利な「Pandas」について、同じくデータを扱う際に使用する代表的なライブラリである「numpy」と比較して解説したいと思います。 「Pandas」 …

Pythonでcsvの読み込み(numpy,pandas対応)

Pythonでデータを扱う際に、データをcsvから読み込むことは多いと思います。 ただし、その方法はいくつかあり、最初はどれを使えばいいか迷うと思います。 そこで、今回はcsvファイルの読み込みについ …

2次元平面分布図における範囲外の凡例や色合いの設定(Python)

今回は、Pythonで平面分布図を作成する際の色合いや、凡例の設定、また凡例の範囲外の色の設定について解説したいと思います。 解説内容 平面分布図の色合いの設定 平面分布図の凡例の設定 平面分布図にお …

スポンサーリンク





初めまして、サイトを運営しているキユと申します。

このサイトでは、まったくの初心者がPythonを使って、単純作業や仕事を効率化できるようになるまでに必要なことをまとめています。