mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 07:31:38 +00:00 
			
		
		
		
	Move patchcheck.py, reindent.py and untabify.py scripts to a new Tools/patchcheck/ directory.
		
			
				
	
	
		
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#! /usr/bin/env python3
 | 
						|
 | 
						|
"Replace tabs with spaces in argument files.  Print names of changed files."
 | 
						|
 | 
						|
import os
 | 
						|
import sys
 | 
						|
import getopt
 | 
						|
import tokenize
 | 
						|
 | 
						|
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 as 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:
 | 
						|
        with tokenize.open(filename) as f:
 | 
						|
            text = f.read()
 | 
						|
            encoding = f.encoding
 | 
						|
    except IOError as 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 OSError:
 | 
						|
        pass
 | 
						|
    try:
 | 
						|
        os.rename(filename, backup)
 | 
						|
    except OSError:
 | 
						|
        pass
 | 
						|
    with open(filename, "w", encoding=encoding) as f:
 | 
						|
        f.write(newtext)
 | 
						|
    if verbose:
 | 
						|
        print(filename)
 | 
						|
 | 
						|
 | 
						|
if __name__ == '__main__':
 | 
						|
    main()
 |