0

所以我一直在用python构建一个基于文本的游戏作为一个学习python的项目,在我学习它们时实现一些东西,所以在某些情况下我开始遇到这个错误,我一直在树莓派上开发这个游戏,在一台机器上运行mint 13 和安卓平板电脑。最近虽然我在 python 3.3 中重建了游戏,但当我这样做时,当我从目录路径打开时开始出现错误,代码是这样的

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

我将房间作为 json 文件存储在项目所在的同一目录中的一个单独文件夹中,如果有人想了解它是如何工作的,您可以在www.github.com/kevin2314/TextGame上查看该项目。在我的树莓派和我的 mint 13 机器上,这段代码工作得很好,但在我的 android 平板电脑上,它返回一个像这样的错误

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

起初我以为这可能只是因为它是在 android 上的,而且它不是专门为在 python 中编程而构建的,所以我没有太注意它。不过,在我将它发布到 github 之后,另一个人也遇到了同样的问题,只是他们使用的是 Ubuntu,所以我不知道路径的问题是什么。

如果有人能对此有所了解,我将不胜感激,我不想和很多人开始有这个问题

4

2 回答 2

1

The path that you are referring to is dependent on the starting directory. You should use the __file__ global variable:

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

I would also suggestion using os.path.join to create the file name so that you can use the platform specific path separators.

Note that os.curdir() will return the location from which the program was started, not the location of the rooms.py file.

于 2013-09-06T16:47:05.983 回答
1

您可以使用 os.getcwd() 找到您的当前目录并从那里继续。

于 2013-09-06T16:42:00.177 回答