text: import os
  import re
  
  
  def modify_doc_title_dir(abspath_rstfiles_dir):
      """
      rst文件中：有‘========’和‘----------’行的表示其行上一行的文字是标题，
      ‘=’和‘-’要大于等于标题的长度。
      使用sphinx-apidoc -o ./source/rst_files /home/myubuntu/pro/mypro命令将
      生成rst文件放在./source/rst_files目录下， 执行sphinx-quickstart命令生成的
      index.rst不用放到这个目录中。 或在source目录下新建
      rst_files目录然后将rst文件剪切到这个目录下，修改后再剪切出来
      生成rst文件后将rst_files/modules.rst文件中的标题去掉，并修改maxdepth字段。
      删除和修改使用sphinx-apidoc -o 命令的生成的rst文件中的标题
      :param abspath_rstfiles_dir: rst文件所在的文件夹的绝对路径
      :return:
      """
      rst_files = os.listdir(abspath_rstfiles_dir)
      # 要删除的节点(标题目录的节点)
      del_nodes = ['Submodules', 'Module contents', 'Subpackages']
      # 要删除的标题中的字符串
      del_str = [' module', ' package']
      # datasets需要的部分
      dataset_list = ['datasets', 'dataset']
      # 需要call方法
      add_call_files = [
          'data.collate', 'data.iterator', 'data.sampler', 'data.tokenizer',
          'data.vocab', 'tokenizer\_utils'
      ]
      # 删除inheritance
      del_inheritance = [
          'crf', 'tcn', 'distributed', 'dataset', 'paraller', 'decoder', 'rdrop',
          'decoding', 'fast\_transformer', 'Adamoptimizer', 'attention\_utils',
          'model\_utils', 'batch\_sampler', 'model'
      ]
      # 文档中空白的part，不显示
      del_rst = ['iterator', 'constant']
      for rst_file in rst_files:
          f = open(os.path.join(abspath_rstfiles_dir, rst_file), 'r')
          file_lines = f.readlines()
          f.close()
          write_con = []
          flag = 0
          first_line = file_lines[0]
          #去除不需要的datasets
          if 'datasets' in first_line:
              name = first_line.split()[0]
              length = len(name.split('.'))
              # paddlenlp.datasets 需要留下
              if length > 2:
                  if 'datasets.dataset' not in first_line:
                      path = os.path.join(abspath_rstfiles_dir, rst_file)
                      print(path)
                      os.remove(path)
                      print(path)
                      continue
          # 去除文档中空白页面，目前是data.iterator, embeddings.constant部分
          del_rst_flag = 0
          for pattern in del_rst:
              if pattern in first_line:
                  path = os.path.join(abspath_rstfiles_dir, rst_file)
                  os.remove(path)
                  del_rst_flag = 1
                  break
          if del_rst_flag == 1:
              continue
          # 是否加入call
          add_call_files_flag = 0
          for i in add_call_files:
              if i in first_line:
                  add_call_files_flag = 1
          # 是否删除inheritance
          del_inheritance_flag = 0
          for j in del_inheritance:
              if j in first_line:
                  del_inheritance_flag = 1
          if 'modeling' in first_line:
              del_inheritance_flag = 0
          for file_line in file_lines:
              if file_line.strip() in del_nodes:
                  flag = 1
                  continue
              if flag:
                  flag = 0
                  continue
              if re.search(del_str[0], file_line):
                  length = len(file_line.split('.'))
                  if length > 2:
                      modify_line = file_line.split('.')[-1].replace(
                          del_str[0], '')
                  else:
                      modify_line = file_line.replace(del_str[0], '')
                  write_con.append(modify_line)
                  continue
              if re.search(del_str[1], file_line):
                  length = len(file_line.split('.'))
                  if length > 2:
                      modify_line = file_line.split('.')[-1].replace(
                          del_str[1], '')
                  else:
                      modify_line = file_line.replace(del_str[1], '')
                  write_con.append(modify_line)
                  continue
              if 'undoc-members' in file_line:
                  if 'no-undoc-members' not in file_line:
                      file_line = file_line.replace('undoc-members',
                                                    'no-undoc-members')
              # 去除datasets中多余内容
              if 'paddlenlp.datasets' in file_line:
                  last_name = file_line.split('.')[-1]
                  if last_name.strip() not in dataset_list:
                      continue
              if 'show-inheritance' in file_line:
                  if del_inheritance_flag == 0:
                      write_con.append(file_line)
              else:
                  write_con.append(file_line)
          if add_call_files_flag == 1:
              write_con.append("   :special-members: __call__\n")
          f = open(os.path.join(abspath_rstfiles_dir, rst_file), 'w')
          f.writelines(write_con)
          f.close()
  
  
  if __name__ == '__main__':
      modify_doc_title_dir('./source')
  