0

だから私はPythonを学ぶためのプロジェクトとしてPythonでテキストベースのゲームを構築し、学習したものを実装していたので、場合によってはこのエラーが発生し始めました。 mint 13 および Android タブレットで。最近、Python 3.3 でゲームを再構築しましたが、それを行ったときに、ディレクトリ パスから開くときにエラーが発生し始めました。コードは次のとおりです。

 with open('rooms/' + str(id) + '.json', 'r', ) as f:
     jsontext = f.read()

部屋をjsonファイルとしてプロジェクトと同じディレクトリの別のフォルダーに保存します。これがどのように機能するかを知りたい場合は、www.github.com/kevin2314/TextGameでプロジェクトをチェックアウトできます。ラズベリー pi と mint 13 マシンの両方でこのコードは問題なく動作しますが、Android タブレットでは次のようなエラーが返されます。

 IOError: [Errno 2] No such file or directory: "rooms/intro.json"

最初は、これはAndroid上にあり、Pythonでのプログラミング用に特別に構築されていないためだと思っていたので、あまり注意を払いませんでした. ただし、githubにリリースした後、別の人がUbuntuを使用していることを除いて同じ問題を抱えていたため、パスの問題が何であるかについて途方に暮れています。

誰かがこれに光を当てることができれば、私は感謝します.多くの人々とこの問題を抱え始めたくありません.

4

2 に答える 2

1

os.getcwd() を使用して現在のディレクトリを見つけ、そこから続行できます。

于 2013-09-06T16:42:00.177 に答える
1

参照しているパスは、開始ディレクトリによって異なります。__file__グローバル変数を使用する必要があり ます。

with open(os.path.join(
             os.path.dirname(__file__), 'rooms', + str(id) + '.json'),
          'r') as f:
    jsontext = f.read()

os.path.joinプラットフォーム固有のパスセパレーターを使用できるように、ファイル名を作成するために使用することもお勧めします。

os.curdir()は、rooms.py ファイルの場所ではなく、プログラムが開始された場所を返すことに注意してください。

于 2013-09-06T16:47:05.983 に答える