Как отметил @FelixKling, наиболее вероятным сценарием является то, что узлы, которые вы ищете, еще не существуют.
Однако современные методы разработки часто могут манипулировать элементами документа за пределами дерева документов либо с DocumentFragments, либо просто отсоединением / повторным подключением текущих элементов напрямую. Такие методы могут использоваться как часть шаблонов JavaScript или для предотвращения чрезмерных операций перерисовки / переплавки, в то время как элементы, о которых идет речь, сильно изменяются.
Аналогично, новая функциональность «Теневой DOM» развертывается в современных браузерах позволяет элементам быть частью документа, но не обрабатываться запросом document.getElementById и всеми его методами sibling (querySelector и т. д.). Это делается для инкапсуляции функциональных возможностей и, в частности, скрыть его.
Опять же, скорее всего, элемент, который вы ищете, просто (пока) в документе, и вы должны сделать, как предлагает Феликс , Тем не менее, вы также должны знать, что это все чаще является не единственной причиной того, что элемент может быть необоснованным (временно или постоянно).
Я использовал eyeD3 на днях с большим успехом. Я нашел, что это могло добавить иллюстрации к тегу ID3, который не могли другие модули, на которые я смотрел. Необходимо будет загрузить tar и выполниться python setup.py install
от исходной папки.
Соответствующие примеры от веб-сайта ниже.
Чтение содержания mp3 файла, содержащего или v1 или v2, отмечают информацию:
import eyeD3
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
print tag.getArtist()
print tag.getAlbum()
print tag.getTitle()
Read mp3 файл (отслеживают длину, скорость передачи, и т.д.) и доступ это - тег:
if eyeD3.isMp3File(f):
audioFile = eyeD3.Mp3AudioFile(f)
tag = audioFile.getTag()
Определенные версии тега могут быть выбраны:
tag.link("/some/file.mp3", eyeD3.ID3_V2)
tag.link("/some/file.mp3", eyeD3.ID3_V1)
tag.link("/some/file.mp3", eyeD3.ID3_ANY_VERSION) # The default.
Или можно выполнить итерации по необработанным кадрам:
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
for frame in tag.frames:
print frame
, Как только тег связан с файлом, он может быть изменен и сохранен:
tag.setArtist(u"Cro-Mags")
tag.setAlbum(u"Age of Quarrel")
tag.update()
, Если бы тег, связанный в, был v2 и требуется сохранить его как v1:
tag.update(eyeD3.ID3_V1_1)
Read в теге и удаляют его из файла:
tag.link("/some/file.mp3")
tag.remove()
tag.update()
Добавляют новый тег:
tag = eyeD3.Tag()
tag.link('/some/file.mp3') # no tag in this file, link returned False
tag.header.setVersion(eyeD3.ID3_V2_3)
tag.setArtist('Fugazi')
tag.update()
Если можно использовать IronPython, существует TagLibSharp. Это может использоваться с любого языка.NET .
Это может зависеть от точно, что Вы хотите сделать в дополнение к чтению метаданных. Если это - просто скорость передачи / имя и т.д., что Вам нужно, и ничто иное, что-то легкое является, вероятно, лучшим.
, Если Вы управляете mp3 мимо, что PyMedia может подойти.
существуют довольно многие, независимо от того, что Вы действительно добираетесь, удостоверьтесь и проверьте его на большом количестве демонстрационных медиа. Существует несколько различных версий тегов ID3, в частности, поэтому удостоверьтесь, что это не слишком устарело.
Лично я использовал этот маленький класс MP3Info с удачей. Это довольно старо все же.
Этот инструментарий может сделать то, в чем Вы нуждаетесь. Я не могу сказать, "лучше" ли, но действительно, если это делает то, в чем Вы нуждаетесь, это - все, что имеет значение, правильно?
HTH
Простой пример от книжного Погружения В работы Python хорошо для меня, это является ссылкой на загрузку, примером является fileinfo.py. Не знайте, является ли это лучшим, но это может сделать основное задание.
вся книга доступна онлайн здесь .
Что Вы, после модуль ID3 . Это очень просто и даст Вам точно, в чем Вы нуждаетесь. Просто скопируйте файл ID3.py в свой каталог пакетов сайта, и Вы будете в состоянии сделать что-то как следующее:
from ID3 import *
try:
id3info = ID3('file.mp3')
print id3info
# Change the tags
id3info['TITLE'] = "Green Eggs and Ham"
id3info['ARTIST'] = "Dr. Seuss"
for k, v in id3info.items():
print k, ":", v
except InvalidTagError, message:
print "Invalid ID3 tag:", message
Я использовал мутаген для редактирования тегов в медиа-файлах прежде. Хорошая вещь о мутагене состоит в том, что он может обработать другие форматы, такие как mp4, FLAC и т.д. Я записал несколько сценариев с большим успехом с помощью этого API.
Я просмотрел приведенные выше ответы и обнаружил, что они не годится для моего проекта из-за проблем с лицензированием по GPL.
И я обнаружил следующее: PyID3Lib , хотя эта конкретная дата выпуска привязки python устарела, она использует ] ID3Lib , которая сама по себе обновлена.
Следует отметить, что обе являются LGPL , и их можно использовать.