我如何强制str纠正pygame.mixer(Python)的类型?

时间:2013-07-20 08:59:47

标签: python linux pygame

我有一些python代码可以在Windows中使用以下代码:

winsound.PlaySound(a_sound, winsound.SND_MEMORY)

当然,在linux中这不起作用。我尝试了以下内容(使用http://www.pygame.org/docs/ref/mixer.html中的文档作为指导):

import pygame
pygame.init()
sound = pygame.mixer.Sound(a_sound)
clock = pygame.time.Clock()
sound.play()
while pygame.mixer.get_busy():
    clock.tick(30)

但我明白了:

TypeError: must be string without null bytes, not str

a_sound不是文件的名称,而是包含未压缩的PCM数据的<type 'str'>(具有正确的RIFF.WAV标头)

如何使用pygame.mixer正确呈现数据?

1 个答案:

答案 0 :(得分:2)

Sound需要文件名或类文件对象。您可以使用StringIO

从字符串创建后者
import cStringIO
...
sound = pygame.mixer.Sound(cStringIO.StringIO(a_sound))