Zanurkuj w Pythonie/Źródła/fileinfo.py: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
Zdzichobot (dyskusja | edycje) kopiowanie przykładów |
Nie podano opisu zmian |
||
Linia 1:
<source lang='python'>
"""Framework
Można utworzyć instancję odpowiedniej klasy podając jej nazwę pliku w konstruktorze.
Zwrócony obiekt zachowuje się jak słownik posiadający parę klucz-wartość
dla każdego fragmentu metadanych.
import fileinfo
info = fileinfo.MP3FileInfo("/music/ap/mahadeva.mp3")
print "\\n".join(["%s=%s" % (k, v) for k, v in info.items()])
for info in fileinfo.listDirectory("/music/ap/", [".mp3"]):
...
Framework
HTMLFileInfo, MPGFileInfo, DOCFileInfo.
za właściwe sparsowanie swojego pliku; zobacz przykład MP3FileInfo.
"""
Linia 32 ⟶ 33:
def stripnulls(data):
"
return data.replace("\00", " ").strip()
class FileInfo(UserDict):
"
def __init__(self, filename=None):
UserDict.__init__(self)
Linia 42 ⟶ 43:
class MP3FileInfo(FileInfo):
"
tagDataMap = {"title" : ( 3, 33, stripnulls),
"artist" : ( 33, 63, stripnulls),
Linia 51 ⟶ 52:
def __parse(self, filename):
"
self.clear()
try:
Linia 72 ⟶ 73:
def listDirectory(directory, fileExtList):
"zwraca listę obiektów zawierających metadane dla plików o podanych rozszerzeniach"
fileList = [os.path.normcase(f) for f in os.listdir(directory)]
fileList = [os.path.join(directory, f) for f in fileList \
if os.path.splitext(f)[1] in fileExtList]
def getFileInfoClass(filename, module=sys.modules[FileInfo.__module__]):
"
subclass = "%sFileInfo" % os.path.splitext(filename)[1].upper()[1:]
return hasattr(module, subclass) and getattr(module, subclass) or FileInfo
|