Pythonのファイルの書き出し方法まとめ

Python では、テキストファイルや CSV ファイルなどの既存のファイルに、データを上書きしたり追記したりすることができます。また、新しいファイルを作って保存することもできます。

ここで、その方法を解説しますので、参考にして頂ければと思います。

目次

1. Python でファイルに書き出す

ファイルの書き出しは、ファイルの読み込みと同じように、以下の 3 つのステップでワンセットです。

  • open() 関数でファイルを開く。
  • write() メソッドでファイルに書き出す。
  • close() メソッドでファイルを閉じる。

特に、close() メソッドで、ファイルを閉じることを忘れる場合が多いので、必ず、この 3 ステップで覚えておきましょう。ファイルを閉じ忘れて、別のコードで同時に、そのファイルを操作してしまうと、厄介なバグが発生する原因になってしまいます。

それでは、実際のコードを見てみましょう。

In [1]:
fileobj = open("sample.txt", "w") #sample.txtを書き出しモードで開きます。
fileobj.write("This is me!") #write()メソッドでファイルに書き込みます。
fileobj.close() #最後にファイルを閉じます。

これで、sample.txt ファイルが作成されます。

解説しますね。

1.1. open() 関数でファイルを開く

まず、open() 関数で、新しいファイルを書き出しモード (“w”) で開いています。モードは、以下を使うことが多いので覚えておきましょう。

 モード  解説
 “r”  読み込み専用で開く(デフォルト)。書き出しは不可。
 “w”  書き出し専用に開く。ファイルが存在する場合は上書きし、まだない場合は新しいファイルを作る。読み込みは不可。
 “w+”  読み書きの両方ができるように開く。ファイルが存在する場合は上書きし、まだない場合は新しいファイルを作る。
 “a”  書き込み用に開く。ファイルが存在する場合は追記する。

今回、モードは “w” にしており、指定したファイル “sample.txt” はまだ存在しないので、新たにファアイルが作成されています。既存のファイルがある場合は、中身を消して上書きします。

また、今回、ファイルパスは、 “sample.txt” とテキスト名だけにしています。この場合、ファイルは、コンピュータの直下に作成されます。jupyter notebook を使っているなら、ホーム画面に追加されます。

open() 関数で指定するファイルパスやモードについては、「Python のファイルの読み込み方法まとめ」で、さらに詳しく解説しているので、そちらをご覧ください。

1.2. write() メソッドでファイルにデータを書き込む

次に、開いたファイルにデータを書き込むには、write() メソッドを使います。

In [1]:
fileobj = open("sample.txt2", "w")
fileobj.write("This is me!")
Out[3]:
11

write() メソッドを実行すると、指定のデータ(今回は “This is me!” )が書き込まれ、その文字数が返ってきます。そして、テキストファイル (sample2.txt) には、”This is me!” という文字列が書き込まれています。

1.3. close () メソッドでファイルを閉じる

最後に、close() メソッドでファイルを閉じて、ファイルの書き出しを終了します。

上述の通り、ファイルの閉じ忘れは非常に多く発生します。そのため、with as 構文で、操作を終えた後にファイルを自動的に閉じる方法があります。次から解説しますね。

2. with as 文でファイルを自動的に閉じる

この構文を使って、ファイルを開くと、ブロック内の操作の実行後に、自動的にファイルを閉じてくれます。

In [1]:
with open("sample.txt", "w") as fileobj:
    fileobj.write("This is me!")

Python のファイルの読み込み方法まとめ」でも解説しているので、併せて確認しておきましょう。

3. ファイルに追記するにはモード “a”

open() 関数で既存のファイルを開く時に、モードを “a” にすると、そのファイルにデータを追記することができます。

上で、作成した sample.txt は、今、下図のようになっています。

これに、新たなテキストを追記してみましょう。

In [1]:
with open("sample.txt", "a") as fileobj:
    fileobj.write("This is the greatest show \n")
    fileobj.write("Rewrite the stars")
    fileobj.close()

これで 2 つのテキストが追加されました。確認してみましょう。

ポイントとしては、テキストに改行を入れたい場合は、末尾に改行コードの (\n) を入力します。なお、改行については「Pythonの文字列の改行方法と便利な操作まとめ」で解説しています。

最初に作った “This is me!” の末尾には、この改行コードを入れていなかったので、追記した文が、すぐ後ろに追加されます。”This is the greatest show” の末尾には改行コードを入れているので、次に書き込んだ “Rewrite the stars” は、改行を入れて追加されていますね。

なお、改行コードを \n にしておけば、異なるプラットフォーム上でも機能しますので、覚えておきましょう。

4. 書き出したファイルの保存先をメニューから選ぶ

ファイルの読み込みと同様に、書き出したファイルの保存先をオープンダイアログで選ぶこともできます。

これを実現するには、GUI(グラフィカル・ユーザー・インターフェイス)を作るために便利な機能を備えたモジュールである tkinter モジュールを使います。このモジュールは、Webサービスやアプリを作る時に便利なので覚えておきましょう。

モジュールについては、「Pythonのモジュールについて抑えておくべき知識とよく使うもの一覧」で、tkinterモジュールについては、Pythonの公式ドキュメントで確認して頂ければと思います。

それでは、次のコードをご覧ください。

In [10]:
'''tkinter モジュールのインポート'''
import tkinter as tk
import tkinter.filedialog as tkfd
 
'''tkアプリウインドウを表示しないコード。書かなくても動作しますが、実用的ではありません。'''
root = tk.Tk()
root.withdraw()
 
'''保存先のダイアログを表示するコード'''
file = tkfd.asksaveasfilename(
    title = "保存場所を選びましょう。",
    filetypes  = [("TEXT", ".txt")]
)
 
'''パスが選ばれた時に保存する'''
if file:
    with open(file, "w") as fileobj:
        fileobj.write("When the world becomes a fantasy")
        print("ファイルを保存しました。")
ファイルを保存しました。

このコードを実行すると、次のように、保存先を選ぶオープンダイアログが表示されます。

ファイル名を入力して、「Save」を選択すると、指定の場所にファイルが書き出されます。

WEBサービスなどを作る時のために、この方法も、頭の片隅に入れておくと良いでしょう。

5. まとめ

Python でファイルを書き出すときは、

  • open() 関数でファイルを開く(※モードに注意)
  • write() メソッドでデータを書き込む
  • close() メソッドでファイルを閉じる

の 3 ステップで 1 セットです。ファイルを読み込む時と同様に、ファイルの閉じ忘れが起こりやすいです。そのため、with as 構文で、自動的にファイルを閉じる方法を活用すると良いでしょう。

また、ファイルの読み込みの時は、モードは “r” ですが、書き出しの時は “w” を使います。そして、”w” を使うと、全て上書き更新されてしまうので、もし既存の内容の後に追記したければ、”a” を選びます。新規のファイルを作る時は、どちらでも構いません。

ぜひお役に立てて頂ければ嬉しく思います。



よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次
閉じる