pygameでdataファイルのpath指定
(python3.3, pygame1.9.2)
pygameで例えばイメージファイルを読み込むとき絶対パスと相対パスの両方が使えるはず。
# 絶対パスからファイルを開く pythonImg_1 = pygame.image.load('絶対パス') # 相対パスからファイルを開く pythonImg_2 = pygame.image.load('image.png')
なのに、pythonImg_2の方ではcouldn't open python.pngと怒られてしまう(もちろん画像ファイルはプログラムソースと同じフォルダ、例えばfolder1においている)。何故?と思って色々試してみると、親フォルダ名を付け足せばうまくいった。
pythonImg_2 = pygame.image.load('folder1\image.png')
念のためpathを取得するソース追加してみる。
import os path = os.path.abspath( __file__ ) print(path)
きちんとfolder1の下にソースコードsample.pyがあった。どういうことだろう?
とりあえず、相対パスで指定するときは親フォルダから書くか、次のようにして絶対パスに書き直しておくことにする。
import os main_path = os.path.dirname(os.path.abspath( __file__ )) file_path = os.path.join(main_path, 'image.png') pythonImg = pygame.image.load(file_path)
パスをつなげるのにos.path.joinを使った理由は、公式にcompatibilityのためにそうしろと書いてあったから。
理由が分からない挙動はすごく困る...自分の大ポカな予感がするけど。