Zanurkuj w Pythonie/Źródła/fileinfo.py: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
kopiowanie przykładów
 
Robwolfe (dyskusja | edycje)
Nie podano opisu zmian
Linia 1:
<source lang='python'>
"""Framework fordo gettingpobierania filetype-specificmatedanych metadataspecyficznych dla danego typu pliku.
 
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.
 
Instantiate appropriate class with filename. Returned object acts like a
dictionary, with key-value pairs for each piece of metadata.
import fileinfo
info = fileinfo.MP3FileInfo("/music/ap/mahadeva.mp3")
print "\\n".join(["%s=%s" % (k, v) for k, v in info.items()])
 
OrLub useużyć funkcji listDirectory, function to getaby infopobrać oninformacje allo fileswszystkich inplikach aw directorykatalogu.
for info in fileinfo.listDirectory("/music/ap/", [".mp3"]):
...
 
Framework canmoże bebyć extendedroszerzony bypoprzez addingdodanie classesklas fordla particularposzczególnych filetypów typesplików, e.gnp.:
HTMLFileInfo, MPGFileInfo, DOCFileInfo. EachKażda classklasa isjest completelycałkowicie responsible forodpowiedzialna
za właściwe sparsowanie swojego pliku; zobacz przykład MP3FileInfo.
parsing its files appropriately; see MP3FileInfo for example.
 
ThisTen program isjest part ofczęścią "Dive Into Python", awolnej freeksiążki Pythono Pythonie bookdla fordoświadczonych
experienced programmersprogramistów. Najnowszą Visitwersję możesz znaleźć tu: http://diveintopython.org/ for the.
latest version.
"""
 
Linia 32 ⟶ 33:
 
def stripnulls(data):
"stripusuwa whitespacebiałe andznaki nullsi nulle"
return data.replace("\00", " ").strip()
 
class FileInfo(UserDict):
"storeprzechowuje filemetadane metadatapliku"
def __init__(self, filename=None):
UserDict.__init__(self)
Linia 42 ⟶ 43:
class MP3FileInfo(FileInfo):
"storeprzechowuje znaczniki ID3v1.0 MP3 tags"
tagDataMap = {"title" : ( 3, 33, stripnulls),
"artist" : ( 33, 63, stripnulls),
Linia 51 ⟶ 52:
def __parse(self, filename):
"parseparsuje znaczniki ID3v1.0 tagsz frompliku MP3 file"
self.clear()
try:
Linia 72 ⟶ 73:
 
def listDirectory(directory, fileExtList):
"zwraca listę obiektów zawierających metadane dla plików o podanych rozszerzeniach"
"get list of file info objects for files of particular extensions"
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__]):
"getzwraca fileklasę infometadanych classpliku fromna filenamepodstawie extensionpodanego rozszerzenia"
subclass = "%sFileInfo" % os.path.splitext(filename)[1].upper()[1:]
return hasattr(module, subclass) and getattr(module, subclass) or FileInfo