/Tools/scripts/untabify.py

http://unladen-swallow.googlecode.com/ · Python · 52 lines · 45 code · 6 blank · 1 comment · 14 complexity · 536f9da7d7fb265a0b8fd0e5555c8748 MD5 · raw file

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