home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / pythonwin / python.exe / UNTABIFY.PY < prev    next >
Encoding:
Python Source  |  2003-05-13  |  1.2 KB  |  53 lines

  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):
  27.     try:
  28.         f = open(filename)
  29.         text = f.read()
  30.         f.close()
  31.     except IOError, msg:
  32.         print "%s: I/O error: %s" % (`filename`, str(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.     f = open(filename, "w")
  47.     f.write(newtext)
  48.     f.close()
  49.     print filename
  50.  
  51. if __name__ == '__main__':
  52.     main()
  53.