2012-09-09 35 views
0

我目前正在使用python 2.7和1.9的Pygame遊戲。我存儲我的圖形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它總是會引發錯誤

"No item named folder\\\\\\\file.png in the archive"

(我不是在Windows所以我現在不能複製確切的錯誤文本,但它有很多的「\」 S)。

有沒有解決方案?

+0

如果您使用os.path.join應該找到它... assumming您使用的是正確的道路 –

+0

哪一行,你在得到這個錯誤嗎?另外,請打印finalFileName的值。 用於複印Windows錯誤文本,使用重定向操作符'>'在命令行和輸出重定向到一個文件 – GodMan

+0

的finalFileName VAR僅僅是一個可選的暗示,告訴pygame的圖像是PNG類型,對進口 – ansdor

回答

0

我認爲你需要分割文件名爲「\」,並且只使用從中image.png,而非文件夾\ image.png。試着讓我們知道它是否有效。我猜這是因爲我不知道的zip文件的內容以及當前工作目錄

2

的問題是,在壓縮文件的文件名通常存儲在帶有正斜槓,從來沒有反斜槓。

因此,加載圖片時,你必須使用一個路徑以正斜槓作爲路徑分隔符,例如'文件夾/ image.png'。