如何播放随机WAV。 Python中的文件夹示例?

时间:2015-03-26 21:48:44

标签: python raspberry-pi wav gpio

我想知道如何从文件中随机播放wav样本。我想在按下a按钮时播放随机选择的wav样本。到目前为止,这就是我所拥有的。

import pygame.mixer 
import RPi.GPIO as GPIO

pygame.mixer.init()
GPIO.setmode(GPIO.BMC)
GPIO.setwarnings(False)

GPIO.setup(2, GPIO.IN, GPIO.PUD_DOWN)

drum = pygame.mixer.Sound("samples/drum_tom_mid_hard.wav")

def play(pin):
    print("playing")
    drum.play()

GPIO.add_event_detect(2, GPIO.FALLING, play, 1000)

print("ready")

while True:
    pass

上面的python代码播放我按下按钮时选择的wav示例。如何修改此代码,使其在按下按钮时从文件中播放随机wav样本?

2 个答案:

答案 0 :(得分:1)

我会使用glob编译目录中的文件列表,然后使用random.choice选择文件。这样的东西添加到你的代码中(或者在play()的情况下,修改):

import glob
import random

soundfiles = glob.glob("samples/*.wav")

def play(pin):
    print("playing")
    pygame.mixer.Sound(random.choice(soundfiles)).play()

答案 1 :(得分:0)

您可以使用os.listdir获取文件夹中的所有文件。

import os, random

def play():
    files=os.listdir('.')
    file=random.choice(files)
    pygame.mixer.Sound(file).play()
    print("playing")

如果你想要wav,你可以添加这一行:

files=filter(lambda f: f.endswith(".wav"), files)