Первый ребенок на python

# -*- coding: utf-8 -*-
__author__="vaulter"
__date__ ="$05.09.2009 22:03:27$"
"""
    Это мой первый скрипт на python
    Он переименовывает файлы, имена которых не содержат номера
    согласно таблице, считанной из указанного cvs файла.
 
    То есть, иными словами, есть таблица
    One, 1
    Two, 2
 
    И есть файлы
    1. One.avi
    Two.avi
 
    Скрипт пропустит 1. One.avi и переименует Two.avi -> 2. Two.avi
    все :)
 
    зы: Было написано для упорядочивания серий Dora Explorer :)
"""
 
import os
import os.path
import re
import csv
import difflib
 
class DoraSeries():
    content = ""
    series = {}
    in_seria = 0
 
    def __init__( self, url ):
        self.url = url
        listReader = csv.reader( open( self.url ) )
 
        for row in listReader:
            self.series[ row[ 0 ].strip().lower() ] = row[ 1 ].strip()
 
    def get_seria( self, name ):
        prepared = name.strip().lower()
        if prepared in self.series:
            return self.series[ prepared ]
        else:
            return 0
 
    def get_most_close( self, name ):
        max = 0
        matcher = difflib.SequenceMatcher()
        matcher.set_seq2( name )
 
        for k in self.series:
            matcher.set_seq1( k )
            r = matcher.ratio()
            if max < r:
                max = r
                kmax = k
                print name, " ? ", k, " = ", r
 
        if max > 0.73: #threshold
            return self.series[ kmax ]
 
        return 0
 
    def rename_by_seria( self, filename ):
        parts = os.path.split( filename )
        name = os.path.splitext( os.path.basename( filename ) )[ 0 ]
        seria =  self.get_seria( name )
 
        if not seria:
            seria = self.get_most_close( name )
 
        if seria > 0:
            newname = parts[ 0 ] + seria + "." + parts[ 1 ]
            print filename, " > ", newname
            os.rename( filename, newname )
 
 
dir = "/home/vaulter/video/Dora Explorer"
wiki_page = DoraSeries( '/home/vaulter/NetBeansProjects/Dora/list.csv' );
 
if __name__ == "__main__":
    names = os.listdir( dir );
    os.chdir( dir )
 
    for name in names:
        fullname = os.path.join( dir, name )  # получаем полное имя
 
        if os.path.isfile( fullname ):        # если это файл...
            print name,
 
            if re.match( r"(\d+)\..*", name ):
                print "YES"
 
            else:
                print "not match"
                wiki_page.rename_by_seria( name )