Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: python + ices + logs  (Прочитано 770 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ZwS

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1674
    • Просмотр профиля
python + ices + logs
« : 17 Мая 2010, 22:28:07 »
потихоньку поднимаю радио сервер на базе icecast'a и ices'a. от ices'a понадобилась дополнительная функциональность которую я решил реализовать при помощи модуля на питоне. суть модуля состоит в следующем:
-в зависимости от времени проигрываются песни из определенных папок (это работает без проблем);
-создается небольшой лог в 10-15 строк, в котором записываются последние проигранные песни и при проигрывании новой сравниваются записи в логе дабы избежать повторов. с этим то и возникла проблема. моя реализация выглядит примерно так:
#Собственно функция смены песни
def ices_get_next ():
song = music_folder + '/' + files[random.randint(0, len(files))]
while (song+'/n') in played == True:
song = music_folder + '/' + files[random.randint(0, len(files))]
#узнаем количество записей в файле (переменная files заполняется ранее). если их меньше 10 то добавляем еще одну строку, иначе заменяем последнюю сдвигая предыдущие "вверх"
if len(files) < 9 :
played.append(song)
else :
for i in range(9, 0, -1):
#а вот тут получаем ошибку IndexError: list index out of range
played.append[i] = played[i-1]
played.append(song)
f_played = open('/home/user1/played', 'w')
i = 0
for i in range(1, len(played), 1):
f_played.write(played[i-1])
f_played.close()
return song
может ли кто подсказать как решить возникшую проблему?

Пользователь решил продолжить мысль 18 Мая 2010, 19:29:52:
после вдумчивого прочтения манов написал такое
def ices_get_next ():
song = music_folder + '/' + files[random.randint(0, len(files))]
while song in played == True:
song = music_folder + '/' + files[random.randint(0, len(files))]
if len(played) >= 15:
played.pop(0)
played.append(song+'\n')
playedfile = open('/home/user1/played.lst', 'w')
for i in played:
playedfile.writelines(i)
playedfile.close()
return song
работает как надо и без сбоев  8)
« Последнее редактирование: 18 Мая 2010, 19:29:52 от ZwS »
Dell Inspiron One 2330 | Intel+Radeon HD7650A | 8GB RAM | Ubuntu GNOME 17.10

 

Страница сгенерирована за 0.017 секунд. Запросов: 22.