(root)/
Python-3.11.7/
Tools/
scripts/
untabify.py
       1  #! /usr/bin/env python3
       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  import tokenize
       9  
      10  def main():
      11      tabsize = 8
      12      try:
      13          opts, args = getopt.getopt(sys.argv[1:], "t:")
      14          if not args:
      15              raise getopt.error("At least one file argument required")
      16      except getopt.error as msg:
      17          print(msg)
      18          print("usage:", sys.argv[0], "[-t tabwidth] file ...")
      19          return
      20      for optname, optvalue in opts:
      21          if optname == '-t':
      22              tabsize = int(optvalue)
      23  
      24      for filename in args:
      25          process(filename, tabsize)
      26  
      27  
      28  def process(filename, tabsize, verbose=True):
      29      try:
      30          with tokenize.open(filename) as f:
      31              text = f.read()
      32              encoding = f.encoding
      33      except IOError as msg:
      34          print("%r: I/O error: %s" % (filename, msg))
      35          return
      36      newtext = text.expandtabs(tabsize)
      37      if newtext == text:
      38          return
      39      backup = filename + "~"
      40      try:
      41          os.unlink(backup)
      42      except OSError:
      43          pass
      44      try:
      45          os.rename(filename, backup)
      46      except OSError:
      47          pass
      48      with open(filename, "w", encoding=encoding) as f:
      49          f.write(newtext)
      50      if verbose:
      51          print(filename)
      52  
      53  
      54  if __name__ == '__main__':
      55      main()