Id
должен быть уникальным. Вместо этого вы должны использовать class
, а затем использовать document.getElementsByClassName('className');
var video = document.getElementsByClassName('vid');
var myFunction = function() {
// Reset the video to
this.currentTime = 0;
// And play again
this.load();
};
for (var i = 0; i < video.length; i++) {
video[i].addEventListener('ended', myFunction, false);
}
Я не эксперт здесь, но я думаю, вам придется использовать какой-то шаблон наблюдателя, чтобы пассивно наблюдать за файлом, а затем отключить событие, которое снова откроет файл при возникновении изменения. Что касается того, как реализовать это, я понятия не имею.
Я не думаю, что open () откроет файл в реальном времени, как вы предлагаете.
Вот немного измененная версия ответа Jeff Bauer , которая устойчива к усечению файлов. Очень полезно, если ваш файл обрабатывается с помощью logrotate
.
import os
import time
def follow(name):
current = open(name, "r")
curino = os.fstat(current.fileno()).st_ino
while True:
while True:
line = current.readline()
if not line:
break
yield line
try:
if os.stat(name).st_ino != curino:
new = open(name, "r")
current.close()
current = new
curino = os.fstat(current.fileno()).st_ino
continue
except IOError:
pass
time.sleep(1)
if __name__ == '__main__':
fname = "test.log"
for l in follow(fname):
print "LINE: {}".format(l)
«Интерактивный сеанс стоит 1000 слов»
>>> f1 = open("bla.txt", "wt")
>>> f2 = open("bla.txt", "rt")
>>> f1.write("bleh")
>>> f2.read()
''
>>> f1.flush()
>>> f2.read()
'bleh'
>>> f1.write("blargh")
>>> f1.flush()
>>> f2.read()
'blargh'
Другими словами - да, будет один «открытый».
Поскольку вы ориентируетесь на систему Linux, вы можете использовать pyinotify , чтобы уведомить вас об изменении файла.
Также существует трюк который может работать хорошо для вас. Он использует file.seek
для выполнения действий tail -f
.
Если у вас есть код, читающий файл, запущенный в цикле while:
f = open('/tmp/workfile', 'r')
while(1):
line = f.readline()
if line.find("ONE") != -1:
print "Got it"
, и вы записываете этот файл (в режиме добавления) из другой программы. Как только в файл добавится «ONE», вы получите распечатку. Вы можете предпринять любые действия, которые вы хотите предпринять. Короче говоря, вам не нужно повторно открывать файл через регулярные промежутки времени.
>>> f = open('/tmp/workfile', 'a')
>>> f.write("One\n")
>>> f.close()
>>> f = open('/tmp/workfile', 'a')
>>> f.write("ONE\n")
>>> f.close()