PyOpenGL 3

ファイル入出力

ファイル入出力に使用するメソッドは以下の通りです。

open(ファイル名, モード)
ファイル名のファイルをモードにしたがって開いて、ファイル記述子を返します。
'r'
読み込み専用
'w'
書き込み専用
'a'
ファイルの末尾に追加
'r+'
更新(読み取りと書き込み)
'w+'
ファイルを空にして、そのファイルを読み書き用に開く
'a+'
ファイルを読み書き用に開いて、ファイルの末尾に追加
'b'
ファイルをバイナリモードで開く (他のオプションと一緒に使用)
read()
ファイルのデータをすべて読み込みます。
返り値は、文字列です。
write(s)
文字列 s をファイルに書き込みます。
readlines()
ファイルのすべての行を読み込んで、リストにして返します。
readline()
ファイルの 1 行を読み込んで文字列で返します。
close()
ファイルを閉じます。

ファイル入出力の例

スクリプト起動時に、コマンドライン引数で指定されたファイルから、 1 行づつ読み込んで処理をするスクリプトです。

  1. 以下のスクリプトを、cat.py というファイル名で保存します。
    import sys
    
    fp = open(sys.argv[1], 'r')
    for line in fp.readlines():
    	print line
    fp.close()
    
  2. 以下の様に実行するとファイル tmp.txt の内容が表示されます。
    # python cat.py tmp.txt

スクリプト解説

import sys
sys モジュールをインポートします。
コマンドライン引数を扱うために必要です。
fp = open(sys.argv[1], 'r')
コマンドライン引数の 1 番目 sys.argv[1] に入っているファイル名を読み込み専用で開きます。
ファイル記述子が fp に代入されます。
for line in fp.readlines():
fp から 1 行づつ読み込んで line に代入し、for 文を1回づつ実行します。
fp.close()
fp を閉じます。

練習問題

  1. 前回の練習問題を参考にして、Maya の Obj ファイルを読み込んで表示できるようにしてみましょう。
    読み込むファイル名は、コマンドラインで指定します。
    # python objdisplay.py sphere.obj

    上図のObjデータ

Obj ファイルフォーマット

#
# から行末までコメントです。
mtllib マテリアルファイル名
マテリアルデータを記述したファイル名です。
g グループ名
グループの名前です。
次のg、またはファイル末尾までが1つのグループです。
グループ名が無いと、全体が一つのグループになります。
usemtl マテリアル名
このグループが使用するマテリアル名を指定します。
マテリアル名は、マテリアルファイルに記述してあります。
v X Y Z
頂点の座標値です。
vt U V
テクスチャの座標値です。
vn X Y Z
法線ベクトルの値です。
f 頂点座標値番号/テクスチャ座標値番号/頂点法線ベクトル番号 ...
フェイスの情報です。
3つの数値が / を区切りとして並びます。 この3つの数値が、フェイスの数だけ並びます。
各番号は、1 から始まります。
テクスチャ座標値番号頂点法線ベクトル番号は、省略可能です。

参考


Prev | Next
index | home
abetmhr@gmail.com