Forwarding back to the list. ---------- Forwarded message ---------- From: lev <[EMAIL PROTECTED]> Date: Sun, May 4, 2008 at 10:21 AM Subject: Re: Script Optimization To: David <[EMAIL PROTECTED]>
On May 4, 12:32 am, David <[EMAIL PROTECTED]> wrote: > > It's too long to post here (160 lines) so here's the link: > > http://uppit.com/d2/CKOYHE/af78a6beeeed3e21a19d5871abb9b879/utils.py > > (if that doesn't work:http://uppit.com/CKOYHE) > > > Thanks in advance, > > lev > > Neither link works for me. I get an error page "Error: invalid > download linnk". How about you send it to the list as an attachment? > > David. Sorry.. but I don't know how to send an attachment here... I am not using a dedicated email client, just google groups, and the option seems to elude me. I forgot to comment it when I was writing it.... I am working on commenting it and making it more readable, and I'll post that tomorrow (I'm going to sleep... it's 2 in the morning) This is a bit long, sorry: #!/usr/bin/env python def main(): from sys import argv from optparse import OptionParser from os import chdir,path fullpath = path.abspath(path.dirname(argv[0])) chdir(fullpath[:-10]) checksums = '%s//checksums.md5' % fullpath newdirname = ('string1', 'string2', 'string3', 'string4') usage = "%prog [options]" parser = OptionParser(usage) parser.add_option('-c', '--check', action='store_true', dest='check', help = 'verify checksums') parser.add_option('-r', '--rename', action='store_true', dest='rename', help = 'rename files to a more usable form (write rights needed)') (options, args) = parser.parse_args() if options.check: check(checksums) chdir(fullpath) pass if options.rename: chdir('..') rename(newdirname, checksums) pass if not options.check and not options.rename: parser.print_help() pass return def check(checksums): checksums = open(checksums, 'r') chgfiles = {} msngfiles = [] for fline in checksums.readlines(): line = fline.split(' *') orig = line[0].upper() try: file = open(line[1].strip(),'rb') import md5 chunk = 8196 sum = md5.new() while(1): chunkdata = file.read(chunk) if not chunkdata: break sum.update(chunkdata) pass new = sum.hexdigest().upper() file.close() if new == orig: print '.', pass else: chgfiles[line[1]] = (orig,new) pass except IOError: msngfiles.append(line[1]) pass pass checksums.close() chgfileskeys = chgfiles.keys() chgfileskeys.sort() msngfiles.sort() print '\n' if len(chgfiles) != 0: print 'Files changed:' for key in chgfileskeys: print key.strip('\n'),'changed from:\n\t',chgfiles[key][0],'to\n \t',chgfiles[key][1] pass print '\n\t',len(chgfiles),'file(s) changed.\n' pass if len(msngfiles) != 0: print 'Files not found:' for x in range(len(msngfiles)): print '\t',msngfiles[x] pass print '\n\t', len(msngfiles),'file(s) not found.\n' pass print "\n\tChecksums Verified\n" return def rename(newdirname, checksums): from os import chdir, rename from glob import glob dict = md5format(checksums) dirlist = glob('./00[1-4]string [1-4]') dirlist.sort() for x in range(4): rename(dirlist[x],newdirname[x]) print '\t',dirlist[x],'renamed to:',newdirname[x] chdir('./%s' % newdirname[x]) for oldfilename in glob('*.mp3'): newfilename = oldfilename[3:] rename(oldfilename,newfilename) print '\t\t',oldfilename,'renamed to:',newfilename pass dict = md5fname_edit(dict,dirlist[x],newdirname[x]) pass chdir('..') md5write(dict, checksums) replace('Webpage.htm', dirlist, newdirname) print '\n\tDirectories and Files renamed.' return def md5format(checksums): dict = {} checksums = open(checksums, 'r') for line in checksums.readlines(): splitline = line.split(' *') dict[splitline[1]] = (splitline[0],splitline[1].split('\\')) pass checksums.close() return dict def md5fname_edit(dict, olddir, newdir): for x in dict.keys(): if dict[x][1][0] == olddir[2:]: dict[x] =(dict[x][0],[newdir,dict[x][1][1]]) if dict[x][1][1][0] == '0': dict[x] =(dict[x][0],[dict[x][1][0],dict[x][1][1][3:]]) pass pass pass return dict def md5write(dict, checksums): keys = dict.keys() keys.sort() checksums = open(checksums, 'w') for x in keys: try: checksums.writelines('%s *%s/%s' % (dict[x][0],dict[x][1][0],dict[x] [1][1])) pass except IndexError: checksums.writelines('%s *%s' % (dict[x][0],dict[x][1][0])) pass pass return def replace(file, oldlist, newlist): from os import remove new = open(file,'r').read() for x in range(4): new = new.replace(oldlist[x][2:],newlist[x],1) pass remove(file) file = open(file,'w', len(new)) file.write(new) return if __name__ == '__main__': main() Thanks in advance, lev -- http://mail.python.org/mailman/listinfo/python-list