python 递归遍历并处理路径下文件

#!/usr/bin/python
import os
import sys
import shutil
tmp_path = "struct"#临时文件夹,执行本脚本前随意创建
path_to_process = sys.argv[1]#需要批量修改的源文件所在路径,
def traverse_process(path):
  if not os.path.exists(path):
    print("No Such Path: " + path)
    return
  if os.path.isfile(path):
    print("to replace: " + path)
    tmp_output_file = os.path.join(tmp_path,"tmp_" + os.path.basename(path))
    print("tmp file: " + tmp_output_file)
    if os.path.exists(tmp_output_file):
      os.remove(tmp_output_file)
    output = open(tmp_output_file, 'w')
    with open(path,'r') as f:
      # irow = 0
      for line in f.readlines():
        # irow = irow + 1
        # if "#ifndef" in line and irow == 1:
        #   output.write('#ifndef _'+each_proto_file.replace('.','_').upper()+'_\n')
        # elif "#define" in line and irow == 2: 
        #   output.write('#define _'+each_proto_file.replace('.','_').upper()+'_\n')
        # elif 'void CopyFrom(const ' in line and 'void CopyFrom(const _' not in line:
        #   output.write(line.replace('void CopyFrom(const ','void CopyFrom(const _')+'\n')
        if line.strip().split(' ')[0] == 'const' and line.split(' ').count('const') == 1:
          print('old ***' + line)
          output.write(line.replace(') {',') const {')+'\n')
          print('new ***' + line.replace(') {',') const {'))
        else:
          output.write(line)
    f.close()
    output.close()
    print(tmp_output_file + '->' + path)
    # shutil.move(tmp_output_file,path) #struct 下临时文件覆盖源文件
  else:
    print("folder: "+os.path.basename(path))
    for sub_names in os.listdir(path):
      traverse_process(os.path.join(path,sub_names))
    


你可能感兴趣的:(script,python,开发语言)