Home | History | Annotate | Download | only in scripts
      1 #! /usr/bin/env python
      2 
      3 "Replace tabs with spaces in argument files.  Print names of changed files."
      4 
      5 import os
      6 import sys
      7 import getopt
      8 
      9 def main():
     10     tabsize = 8
     11     try:
     12         opts, args = getopt.getopt(sys.argv[1:], "t:")
     13         if not args:
     14             raise getopt.error, "At least one file argument required"
     15     except getopt.error, msg:
     16         print msg
     17         print "usage:", sys.argv[0], "[-t tabwidth] file ..."
     18         return
     19     for optname, optvalue in opts:
     20         if optname == '-t':
     21             tabsize = int(optvalue)
     22 
     23     for filename in args:
     24         process(filename, tabsize)
     25 
     26 def process(filename, tabsize, verbose=True):
     27     try:
     28         f = open(filename)
     29         text = f.read()
     30         f.close()
     31     except IOError, msg:
     32         print "%r: I/O error: %s" % (filename, msg)
     33         return
     34     newtext = text.expandtabs(tabsize)
     35     if newtext == text:
     36         return
     37     backup = filename + "~"
     38     try:
     39         os.unlink(backup)
     40     except os.error:
     41         pass
     42     try:
     43         os.rename(filename, backup)
     44     except os.error:
     45         pass
     46     with open(filename, "w") as f:
     47         f.write(newtext)
     48     if verbose:
     49         print filename
     50 
     51 if __name__ == '__main__':
     52     main()
     53