【问题标题】:Error with path of my picture directory PYTHON我的图片目录 PYTHON 的路径出错
【发布时间】:2014-05-27 09:46:39
【问题描述】:

我尝试访问我的一个目录中的一张图片,但每次都会出错。 其实我的文件夹是这样的:

gamefolder:
    lib:
        main.py
        level.py
        othermodules.py
        ...
    data:
        Level1.png
        otherspictures.png

在 main.py 的主要 python 文件中,我写道:

currentpath = os.path.dirname(sys.argv[0]) 
parentpath = os.path.dirname(currentpath) 
sys.path.append(os.path.join(parentpath, 'data'))

但我的脚本之一总是出错:main.py 调用的 level.py :

pygame.error: Couldn't open Level_1.png

level.py中的代码是这样的:

self.image = pygame.image.load('Level1.png').convert_alpha()

我还不熟悉python路径..但​​是如果我能把那个文件夹安排成那样就太好了,非常优雅!

感谢帮助:)

【问题讨论】:

    标签: python path pygame relative-path directory-structure


    【解决方案1】:

    试试

    currentpath = os.path.dirname(os.path.realpath(__file__))
    # or 
    #currentpath = os.path.dirname(os.path.realpath(sys.argv[0]))
    
    datadir = os.path.join(os.path.dirname(currentpath), 'data')
    
    self.image = pygame.image.load(os.path.join(datadir, 'Level1.png')).convert_alpha()
    

    路径sys.argv[0]可以是main.py,其dirname是空字符串

    更新

    作为pygame的说明书

    为了兼容性,您应该使用os.path.join()

    【讨论】:

    • 我也尝试过,但我使用的是 IDLE(所以 file 不起作用),并且在 pyscripter 之类的其他 IDE 中,我遇到了同样的错误,无法打开 Level1。 png .. 我用 print(currentpath) 检查了它不是空的.. 我还在 sys.path 中检查了我的数据文件夹...
    • 已更新。但我不明白 file 不起作用 的含义
    • 我认为它可以工作,但我必须在我调用的每个函数中像变量一样添加 datadir。这不会很优雅:/除非有一种方法可以在不执行 def ..(self,datadir) 的情况下调用 datadir?也许有一个名为 path 和 path.datadir 的类?
    • 哼.. 指令 --file-- 在 IDLE 中不起作用,因为它是一个交互式 python shell ;)
    • 我创建了一个包含该代码的constant.py,我从常量导入*它工作完美!谢谢@mskimm
    猜你喜欢
    • 1970-01-01
    • 2016-01-19
    • 2018-04-18
    • 1970-01-01
    • 2020-04-18
    • 2013-11-02
    • 1970-01-01
    • 2013-12-05
    相关资源
    最近更新 更多