# -*- 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 )