環境設定
プログラム作成
ファイル
tkinter
|
Pythonファイル処理ファイルの入出力の方法を示します. 目次はじめにコンピューターを使ったデータ処理では,ファイルの入出力は大変重要です.通常,処理するデータは保管されており,処理された結果もファイルに保管されます.Python でのファイル操作は他のプログラミング言語と似ており,プログラミングの経験のある人はすぐに理解できるでしょう.ここでは,ファイル処理の基本的なことを説明します. ファイル読み書きの基本構文ここでは,最も単純な例を使いテキストファイルの読み書きのプログラミング方法を示します.単純な例ですが,応用範囲は広いと思います. ファイルの読み込みテキストファイルを1行ずつ読み込み処理するプログラムは,以下のように記述します.ファイル処理は,open() 関数でファイルオブジェクトを作成することから始めます.以下の例では,行毎にデータを読み込み,処理をします.行末まで処理が完了すると, ファイルオブジェクト = open("ファイル名", "読み込みモード", encoding="文字コード") for 文字列変数 in ファイルオブジェクト: 文字列変数 = 文字列変数.strip() # 前後の空白文字の削除 実行文 実行文 … else: # 無くても良い 実行文 実行文 … ファイルオブジェクト.close() 001 #!/usr/bin/python3 002 i=0; 003 004 f = open("sample.txt", "r", encoding="utf-8") 005 006 for x in f: 007 i += 1 008 print(i, "\t", x, end="") 009 else: 010 print("--------------------") 011 print("finish") 012 f.close() 4行目で,読み込み用のファイルオブジェクトを作成します.「for x in f:」で,(1)1行を読み込み,(2)変数 x に代入します.6 — 8行を,ファイル末尾まで繰り返します.ファイル末尾に達したら,10行目以降を実行します.8行目の「print(i, "\t", x, end="")」の end="" は,末尾に何も付けないという命令です.print 文は,デフォルトで改行を「"\n"」を付けます.「x in f」でも改行を読み込むので,行末に二つ改行が並ぶことを防ぎます. このほかに,「readlines()」メソッドを使い行毎に読み込む方法もありますが,勧められた方法ではありません.
ファイルへの書き込みファイルの書き込みには,write() メソッドを使います. ファイルオブジェクト = open("ファイル名", "書き込みモード", encoding="文字コード") while ブール値: 実行文 文字列変数 = "フォーマット文字列".format(文字や数字のシーケンス) # 文字列作成 ファイルオブジェクト.write(文字列変数) 実行文 … else: # 無くても良い 実行文 実行文 … ファイルオブジェクト.close() 001 #!/usr/bin/python3 002 003 f = open("sample.txt", "w", encoding="utf-8") 004 005 x = 0 006 while x <= 20: 007 str = "{0:<d}\t{1:<d}\t{2:<d}\n".format(x, x**2, x**3) 008 f.write(str) 009 x += 1 010 011 else: 012 print("finish") 013 f.close() ファイルに書き込まれるタイミングは,プログラムの実行よりも遅延します.データはメモリーのバッファーに溜め込まれ,あるテイミングでファイルに書かれます.書き込まれる前に,そのファイルを処理すると,思わぬ結果になることが有ります.これを防ぐために,flush() メソッドを使います.「ファイルオブジェクト.flush()」を記述することで,バッファーのデータがファイルに強制的に書かれます. open() 関数使い方ファイルを読み書きするためには,open() 関数を使いファイルオブジェクトを作成することからはじめます. open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
引数の詳細説明モード (mode)ユニバーサル改行モード 'U' は,後方互換のためのようです.そのため,新たにプログラムを作成するときには,使用しない方が無難です.
エンコーディング (encoding)Python で使えるエンコードについては,標準エンコーディングに書かれています.表 2 は,その中から英語と日本語です. open 関数の引数でエンコーディング(encoding)が指定されていない場合に,テキストモードで使われるエンコーディングはプラットフォームに依存します.locale.getpreferredencoding(False) を使うと,ロケールのエンコーディングを得ることができます(プログラム例).
ファイルオブジェクトに対するメソッドファイルの状態
ページ作成情報参考資料
更新履歴
|