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