0

我目前正在使用 python 2.7 和 pygame 1.9 制作游戏。我将我的图形存储在 中graphics.dat,这只是一个重命名的 zip 文件。我用来将图形加载到游戏中的功能是这样的:

import pygame, zipfile, tarfile sys, os
from cStringIO import StringIO
from pygame.locals import *
def loadImage(filename, noAlpha=False):
    baseZip = zipfile.ZipFile(os.path.join("..", "Data", "graphics.dat"))
    imgData = baseZip.read(filename) #the "filename" argument is already os.path.join()'ed when I pass it to the function
    imgDataIO = StringIO(imgData)
    finalFileName = os.path.split(filename)
    preSurf = pygame.image.load(imgDataIO, finalFileName[1])
    if noAlpha:
        resultSurf = preSurf.convert()
    else:
        resultSurf = preSurf.convert_alpha()
    baseZip.close()
    return resultSurf

在 linux (Ubuntu 12.04) 上它可以完美运行,但在 Windows 上它总是会引发错误

“存档中没有名为文件夹\\\\\\file.png 的项目”

(我现在不在 Windows 上,所以我无法复制确切的错误文本,但它有很多“\”)。

有解决办法吗?

4

2 回答 2

2

问题是 zip 文件中的文件名总是用正斜杠存储,而不是反斜杠。

因此,在加载图像时,您必须使用带有正斜杠的路径作为路径分隔符,例如“folder/image.png”。

于 2012-09-09T06:41:08.290 回答
0

我认为你需要用'\'分割文件名并只使用其中的image.png,而不是文件夹\image.png。只要尝试让我们知道它是否有效。我猜这是因为我不知道 zip 文件的内容以及您当前的工作目录

于 2012-09-09T06:09:37.350 回答