detab v2.0
来源:互联网 发布:银行数据采集器 编辑:程序博客网 时间:2024/06/05 08:59
#-------------------------------------------------------------------------------# Name: detab.py# Purpose: replace the tab character by several whitespace characters# in C/C++ source/head files.# Author: mayadong7349# Created: 04/21/2012# Copyright: (c) mayadong7349 2012# Licence: GPL#-------------------------------------------------------------------------------#! /usr/bin/env python3# -*- coding: utf-8 -*-# Filename: detab.pyfrom os import renamefrom os import strerrorfrom sys import stdinfrom sys import stderrfrom sys import argvgetln = stdin.readlineerrmsg = stderr.writedef main(): print(r"""This program exchanges '\t' with several whitespace characters in your code files.Usage: detab.py <file list>""") if len(argv) < 2: errmsg('No actions specified.') else: print('''How many whitespace characters you want(4 or 8 is especially recommanded) ?Caution: If an invalid number is given, 4 will be taken by default. ''') try: num = int(getln()) except ValueError: num = 4 for oldfile in argv[1:]: newfile = oldfile # errno = 0 try: # rename the old file by adding a '.old' extension. rename(oldfile, oldfile + '.old') except OSError as err_type: # in Win32, you can also use WindowsError instead. errmsg(str(err_type) + oldfile + '\n') continue oldfile += '.old' # open file for reading try: fin = open(oldfile) except IOError as err_type: errmsg(str(err_type) + oldfile + '\n') continue # open file for writing try: fout = open(newfile, 'w') except IOError as err_type: errmsg(str(err_type) + newfile + '\n') continue # exchange '\t' with several whitespace characters in old file, and write into a new file lines = (eachline.expandtabs(num) for eachline in fin) for eachLine in fin: fout.write(eachLine.expandtabs(num)) # close all files opened fout.close() fin.close() print('Success: %s --> %s' % (oldfile, newfile))if __name__ == '__main__': main()