Thursday, February 16, 2012

batch rename and (move) files using python

So, my friend asked me to rename the files. The file names are alphanumeric and they should be renamed with leading zeroes but in order. the default sort is 1,10,11….2, 20….etc  but correct order would be 1,2,3,4,5…… So, I did some hit and trial and some binging, googling…
Finally done
here is the code

import os
import re
import shutil

def main():
## Commented out are the codes to create file for working purposes    
##    for a in range(1,20):
##        for b in ["a", "b", "c"]:
##            filename="sec"+str(a)+b+".data"
##            c=open(filename,"a")
##            c.close()
    sortedfnames=sorted(fnames, key=natural_sortkey)
    for index, fname in enumerate(sortedfnames):

        index2=str(index).zfill(4)  ##change zfill parameter to 3 if 001, 4 if 0001 etc
        #print str(index)+ fname
        shutil.copy(os.path.join(directory,fname), os.path.join(directory2,(index2+fname)))

tokenize = re.compile(r'(\d+)|(\D+)').findall

def natural_sortkey(string):          
    return tuple(int(num) if num else alpha for num, alpha in tokenize(string))


Worked as magic!!

note: I got the alphanumeric sort tips from stackoverflow user(

Wednesday, February 15, 2012

Alternate styling in word [With Macro]

Call me lazy,

I would rather write a script to do alternate bold and not bold of paragraphs than do it manually.

So, here is the script

sub i_am_not_lazy()

Dim para As Paragraph
Dim i As Integer
i = 1
For Each para In Selection.Paragraphs
If i Mod 2 = 0 Then
para.Range.Font.Bold = True
para.Range.Font.Bold = False
End If
i = i + 1

end sub

here is the result...

Dear aaa,
I am not trying to be lazy but I have some 50 plus questions
 I have to insert answers in between them in BOLD.
I am trying to find out if we have some smart idea to do.
Thank you for your post. I really was not looking for using CTRL B button because I have to press it everytime I enter answers.
Your response for putting macros seemed useful, but I still did not get how to use it.
Can you please guide me through the steps?
Thank you so much