#python
#python
Вопрос:
у меня есть скрипт для воспроизведения случайного файла wav из папки, работает хорошо, но мне нравится, чтобы он воспроизводился только с 9 утра до 5 вечера, не уверен, как это сделать, спасибо
from os.path import isfile, join
import random
#path you want to get wav files from
path = "C:WindowsMedia"
onlyfiles = [ f for f in listdir(path) if isfile(join(path,f)) ]
onlywavfiles = []
for f in onlyfiles:
if f[-3:] == "wav":
onlywavfiles.append(f)
#generate random number based on number of available files
randomnum = random.randint(0,len(onlywavfiles)-1)
eg.plugins.System.PlaySound(path "/" onlywavfiles[randomnum], 1, False)
Комментарии:
1. Вместо этого используйте планировщик задач Windows для запуска вашего скрипта
2. В чем проблема с вашим кодом?
Ответ №1:
Поскольку вы не сказали, что запускает этот скрипт, мне придется догадаться.
Я думаю: Сценарий запускается событием из вашей домашней автоматизации. Возможно, кто-то звонит в звонок, или Балто просит его поесть, или рыба выпрыгивает из аквариума.
Это запускает событие и запускает скрипт. Скрипт воспроизводит случайный wav-файл из папки мультимедиа.
Но вы не хотите, чтобы музыка воспроизводилась за пределами указанного вами интервала.
Это не имеет значения, если скрипт все еще выполняется / запускается, только звук не должен воспроизводиться.
Вы могли бы просто прочитать время, извлечь час и проверить 9 <час или час> 16 и вернуться из скрипта до воспроизведения звука, если тест верен. (Я из Германии, поэтому у нас есть 24 часа времени. Я не знаю, как python возвращает часы для 12-часовых систем.)
from os.path import isfile, join
import random
import datetime
hr = datetime.datetime.now().hour
if hr < 9 or hr > 16:
exit()
#path you want to get wav files from
path = "C:WindowsMedia"
onlyfiles = [ f for f in listdir(path) if isfile(join(path,f)) ]
onlywavfiles = []
for f in onlyfiles:
if f[-3:] == "wav":
onlywavfiles.append(f)
#generate random number based on number of available files
randomnum = random.randint(0,len(onlywavfiles)-1)
eg.plugins.System.PlaySound(path "/" onlywavfiles[randomnum], 1, False)