查找文件中除了注释以外的中文

在一些需要国际化的项目中,需要找出曾经代码中的中文替换为其他文字,我这里提供一种比较粗糙的查找小工具check_zh.py。有能改进的地方请大家指出。

环境是linux,python2.6

代码如下:

  1 #/usr/bin/env python
  2 #coding:utf-8
  3
  4 import os,sys
  5 import re
  6 import codecs
  7 reload(sys)
  8 sys.setdefaultencoding(‘utf8‘)
  9
 10
 11 zhPattern = re.compile(u‘[\u4e00-\u9fa5]+‘)  #用于匹配有中文的行
 12 file_types = [‘.pyc‘,‘.jpg‘,‘.png‘,‘.xls,‘,‘.svn-base‘]   #默认过滤掉的二进制文件的扩展名
 13 choice_tpye_list = []  #输入要查找的文件格式
 14 save_path = ‘‘   #结果保存位置
 15
 16
 17
 18 def start():
 19     ‘‘‘
 20     argv[1]:要查询的文件或目录的绝对路径
 21     argv[2]:要查询的文件的格式,输入*或者不输入将按默认设置查
 22     argv[3]:查询结果的保存路径,绝对路径
 23     :return:
 24     ‘‘‘
 25     global choice_tpye_list,save_path
 26     try:
 27         paths = sys.argv[1]
 28         print ‘paths‘,paths
 29     except Exception:
 30         paths = ‘‘
 31     try:
 32         choices = sys.argv[2]
 33         print ‘choices‘, choices
 34         if choices == ‘*‘:
 35             choices = ‘‘
 36     except Exception:
 37         choices = ‘‘
 38     try:
 39         save_path = sys.argv[3]
 40         print ‘save_path‘, save_path
 41     except Exception:
 42         save_path = os.path.join(os.getcwd(),‘check_zh.txt‘)
 43     choice_types = choices.split(‘,‘)
 44     if len(choice_types) == 1 and ‘‘ in choice_types:  #choice_types可能是[‘‘],其布尔值为True
 45         pass
 46     else:
 47         choice_tpye_list = choice_types
 48     path_list = paths.split(‘,‘)
 49     for path in path_list:
 50         checkDIR(path)
 51
 52
 53 def checkDIR(path):
 54     ‘‘‘检查是不是文件,是文件处理,不是则向下查找文件‘‘‘
 55     if os.path.isfile(path):
 56         a,b = os.path.splitext(path) # 去除扩展名
 57         if choice_tpye_list:
 58             if b in choice_tpye_list:   #检查当前文件扩展名是不是指定查询的扩展名文件
 59                 checkZh(path)
 60         else:
 61             if b not in file_types:
 62                 checkZh(path)
 63
 64     elif os.path.isdir(path):
 65         file_list = os.listdir(path)
 66         path_list = map(lambda x: os.path.join(path, x), file_list)  # 转为绝对路径
 67         for item in path_list:
 68             checkDIR(item)
 69     else:
 70         print u‘---输入错误---‘
 71
 72 def checkZh(file):
 73     ‘‘‘查找文件中的中文位置‘‘‘
 74     num = 1
 75     all_lis = []
 76     lis = []
 77     with open(file, ‘r‘) as f:
 78         line = f.readline()
 79         while line:
 80             try:
 81                 line = line.decode(‘utf-8‘)
 82             except Exception,e:
 83                 print e,‘----‘,file,‘---‘,num,‘---‘,line,u‘---文件可能是个二进制文件‘
 84
 85             content_lis = line.split(‘#‘)
 86             match = zhPattern.search(content_lis[0])
 87             if match:
 88                 lis = [file, num, line]
 89                 all_lis.append(lis)
 90             line = f.readline()
 91             num += 1
 92
 93     with codecs.open(save_path, ‘a‘,‘utf-8‘) as f:
 94         f.write(‘文件%s的查找结果:\n‘%file)
 95         if all_lis:
 96             for itme in all_lis:
 97                 f.write(‘    %s   第%s行   %s\n‘ % (itme[0],itme[1], itme[2]))
 98         else:
 99             f.write(‘    无相关结果\n‘)
100
101
102
103
104
105 if __name__ == ‘__main__‘:
106     start()
107     print u‘***查找结果将在:%s显示***‘%save_path
时间: 2024-08-06 03:29:56

查找文件中除了注释以外的中文的相关文章

linux命令---查找文件中的内容

linux命令---查找文件中的内容 [[email protected] ~]$ cat 1.txt |egrep '123456789|second'-------匹配123456789或者second的行 first line:123456789012345678901234567890123456789012345678901234567890 second line:one two three four five six seven eight nine ten [[email pro

怎么在android的XML文件中添加注释

android的XML文件注释一般采用 <!--注释内容 -->的方式进行 在XML中,形如    <Button           />      的表示方式,其中"/>"的含义表示这个XML中没有内文,他是一个最小组成单元,也就是说他的中间不能包含其他任何< >的代码,所以在<Button />中间注释会出现错误 注意看到,在注释的前面有一个">"符号,这就是我们能够在他中间进行注释的原因,他的完整结

Linux Shell脚本去掉几类常见文件中的注释

Linux操作系统中去掉各类文件中的注释这个功能比较常用,通常用在查看一个较长的文件,又不想看注释的情况.通常这些文件包括C语言编写的*.c.*.h文件.cpp文件.*.xml文件.*.sh shell脚本文件.*.ini *.conf配置文件.*.php *.py *.pl等编程语言编写的文件以及无扩展名的一些可执行文件等. 实现这个功能并不复杂,通常注释风格就那么几种,在编写脚本过程中只需要编写出合适的正则表达式以及运用适当的文本处理工具(grep.sed等)即可. 针对几种常见的注释风格编

如何在PDF文件中添加注释功能

PDF文件并不陌生,那么对PDF编辑与添加注释大家是否有了解过?编辑与加注释是不同的,PDF编辑文件是对内容进行编辑修改,能修改原文件中的内容:而添加注释则是在原文件上添加备注,对文件中的重点文字添加下划线等标记.下面分享如何在PDF文件中添加注释功能.   步骤: 1.首先我们可以百度搜索'悦书PDF阅读器',点击进入下载即可. 2.点击菜单栏'+'打开文件,或者直接把文件拖入到阅读器中即可打开.在打开界面中选择PDF文件并点击'打开'即可. 3.打开的PDF文件页面中,选择下方工具栏中的'注

《Linux学习并不难》Linux常用操作命令(14):grep命令查找文件中符合条件的字符串

8.14  <Linux学习并不难>Linux常用操作命令(14):grep命令查找文件中符合条件的字符串 使用grep命令可以查找文件内符合条件的字符串.          命令语法: grep [选项] [查找模式] [文件] 命令中各选项的含义如表所示. 选项 选项含义 -E 模式是一个可扩展的正则表达式 -F 模式是一组由断行符分隔的定长字符串 -P 模式是一个Perl正则表达式 -b 在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量 -c 只显示匹配行的数量 -i 比较时不

怎样批量删除PDF文件中的注释

日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释? 操作教程: 1.首先我们点击安装在电脑上的PDF编辑器,运行程序,我在看见软件界面之后,我们点击软件界面的"打开"选项.添加并打开我们需要进行编辑的PDF文件. 2.PDF文件打开以后,在软件的工具栏里找到"注释"按钮,单击按钮,会弹出一个下拉框,然后选择"显示注释列表&qu

查找文件中的中文并替换,以支持程序中英文(国际化)

手头的项目需要国际化,一种常用的实现方式是搞两个语言文件,KEY-VALUE形式.Ini文件是常用的key-value实现. 比如 chinese_file.ini           ID_LOGIN_SUCCESS = 成功 english_file.ini            ID_LOGIN_SUCCESS= success 程序启动时,使用其中的某种文件,并加载到hashmap中.程序使用到多语言的地方使用GetTrueText(KEY) . 这样无论哪国的语言,程序里面只有看到的k

php 如何把中文写入json中 当json文件中还显示的是中文

/*** * 更新版本 */ function showupversionsub(){ #接受post 过来的数据 $app_type=$_POST['aap_type']; if($app_type=='android'||$app_type=='ios'||$app_type=='windows'){ #组成数组 $arr=array( mainVer=>$_POST['mainVer']==null? '':$_POST['mainVer'], upVer=>$_POST['upVer'

eclipse中xml、jsp等,非Java文件中的注释快捷键是什么?

非Java文件,例如jsp文件.xml文件中的要想快速注释一段话的,eclipse提供了注释的快捷键: 先选定要注释的内容 然后:Ctrl+shift+c 取消注释也是先选定再快捷键 原文地址:https://www.cnblogs.com/niusdtz/p/9459543.html