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