Pythonのファイル入出力はビルトイン機能として用意されています。ファイルを指定してopen()を呼び出すとクラス _io.TextIOWrapperの値が戻ってきます。
ここに紹介する2つのサンプルコードはどちらもファイルを読み込みでオープンし変数fに格納した後、fを使って読み出し、その内容を出力しています。
withopensample.pyはwith as文を使って変数fをローカル変数として扱っています。with as文のブロックが終了すると、fはローカル変数なので消失します。もちろんopensample.pyの書き方でもちゃんと動きますが、withopensample.pyはpythonらしい書き方なので、pythonでは多用される傾向にあります。
## File: opensample.py
# ファイル(自分自身)をオープンし、読み込み
# 出力した後、クローズする
f = open("opensample.py",encoding='utf-8')
print(f.read(),end='')
f.close()## File: withopensample.py
# ファイル(自分自身)をwith文内でオープンし、読み込み
# 出力する (クローズは自動)
with open("withopensample.py",encoding='utf-8') as f:
print(f.read(),end='')ファイルに書き出すときは、open()の2番目の引数に’w’を指定します。ただし、既に指定したファイルが存在していた場合は、上書きします。ファイルに追加する場合は’a’を指定します。
# File: filewsample.py
with open('hello.txt','w',encoding='utf-8') as f:
f.write('こんにちは世界')この書き出しでは改行コードが含まれていません。行の最後に改行を入れたい場合、’’とします。つまり’こんにちは世界’となります。
利用しているシステムのデフォルトコードがutf-8に設定されていない場合、ファイルの読み込みや書き出しの際にエンコーディングを明示的にutf-8とする必要があります。経験の範囲では、macOSやGNU/Linuxの環境では問題ありませんでしたが、Windows系の環境ではutf-8を指定する必要がありました。
読み込むときはファイルオープンの際に次のようなエンコーディング指定を行います。書き出す時もエンコーディングの指定を行う必要があります。
open(ファイル名,encoding='utf-8')
その他のエンコーディングに関してはUTF-8についての簡単な説明を用意していますので、そちらを参照してください。
UNIXではPythonのビルトインのファイル入出力よりもより細かなファイル入出力の制御が用意されています。そのようなシステムのファイル入出力を使いたい場合はモジュールosを使います。詳しくはPythonの公式オンラインマニュアルのosモジュールのパートを確認してください。