python读取文件夹及其子文件夹下所有含有中文字符串的lua文件

#!/usr/bin/python #coding=utf-8

import sys import os import shutil import struct import hashlib import re

G_WORK_PATH = "E:\phoneclient" G_TARGET_PATH = [  #lua:  ["%s/sdz/script",     "(.*\.lua)",], ] G_OUTPUT_LIST = []

#跳转至当前目录 os.chdir(os.path.abspath(sys.path[0])) os.environ[‘LANG‘] = "zh_CN.utf8"

#检查中文内容 def Check():  global G_WORK_PATH  global G_TARGET_PATH

for target_path in G_TARGET_PATH:   final_path = target_path[0]%G_WORK_PATH

match_str = ""   if len(target_path) > 1:    match_str = target_path[1]

#判断是文件还是文件夹   if os.path.isfile(final_path):    CheckSingleFile(final_path)    continue   else:    final_path = CheckEndWithOsSep(final_path)

for dir_info in os.walk(final_path):    #跳过隐藏文件夹    if -1 != dir_info[0].find("/.") or -1 != dir_info[0].find("\\."):     continue

tmp_path = dir_info[0][len(final_path):]    if "" != tmp_path:     tmp_path = CheckEndWithOsSep(tmp_path)

for i in dir_info[2]:     #这几个文件是ANSI编码,也没有中文,暂时屏蔽     if "reslvlogicdumper.lua" == i or "protocalonlinegift.lua" == i or "equipexchangelayer.lua" == i or "facechatexlayer.lua" == i:      continue

if "" != match_str:      match_ret = re.match(match_str, "%s%s"%(tmp_path, i))      if match_ret and len(match_ret.groups()) > 0:       CheckSingleFile("%s%s%s"%(final_path, tmp_path, i))     else:      CheckSingleFile("%s%s%s"%(final_path, tmp_path, i))

#检查单个文件 def CheckSingleFile(file_path):  global G_OUTPUT_LIST

tmp_file = open(file_path, "rb+")  file_info = tmp_file.readlines()  tmp_file.close()

found = False  line_count = 0  for str_line in file_info:   line_count += 1   if CheckSingleLine(OnlyStr(str_line)):    if not found:     found = True     G_OUTPUT_LIST.append(file_path + "\n")    #记录文件名和行数    G_OUTPUT_LIST.append(str(line_count) + "\n")

#检查单独一行 def CheckSingleLine(str_line):  if "--" == str_line[:2]:   return False

zh_match = re.match(ur".*[\‘\"].*[\u4e00-\u9fa5]+.*[\‘\"].*", str_line.decode("utf8"))  #排除输出日志内容  log_match = re.match(ur".*(?:PrintLog|colog|cmd_colog).*[\‘\"].*[\u4e00-\u9fa5]+.*[\‘\"].*", str_line.decode("utf8"))  return zh_match and not log_match

#补充斜杠 def CheckEndWithOsSep(path_str):  if path_str.endswith("/") or path_str.endswith("\\"):   return path_str  return path_str + os.path.sep

#剔除空白字符 def OnlyStr(tmp_str):  return tmp_str.strip("\r\n").strip("\n").strip("\t").strip()

#输出结果 def WriteResult():  global G_OUTPUT_LIST

tmp_file = open("check.txt", "w")  tmp_file.writelines(G_OUTPUT_LIST)  tmp_file.close()

if __name__ == "__main__":  Check()  WriteResult()

时间: 2024-10-14 01:18:21

python读取文件夹及其子文件夹下所有含有中文字符串的lua文件的相关文章

Linux C 读取文件夹下所有文件(包括子文件夹)的文件名(转)

Linux C  下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下: 1 #include <dirent.h> 2 struct dirent 3 { 4 long d_ino; /* inode number 索引节点号 */ 5 off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ 6 unsigned short d_reclen; /* length of this d

Java与Python统计文件夹及子文件夹下文件个数

package dang; import java.io.File; /** * @ClassName: FileCount * @Description: TODO() * @author: dangjinhu * @date: 2018年11月1日 下午2:24:58 */ public class FileCount { public static void main(String[] args) { int[] array = new int[]{0,0}; print(new File

nodejs 文件系统(fs) 删除文件夹 及 子文件夹下的所有内容

http://blog.163.com/hule_sky/blog/static/2091622452015112821829773/ node 文件系统fs 为我们提供了一些方法 进行文件和文件夹的读写删除等操作 下边将介绍删除文件夹及子文件夹下的所有内容的相关命令(均含有同步和异步方法) 1. fs.stat && fs.statSync 提供了访问文件的属性信息 2. fs.readdir && fs.readdirSync 提供读取文件目录信息 3. fs.unli

(转) Ubuntu 更改文件夹及子文件夹权限

Linux系统下如何修改文档及文件夹(含子文件夹)权限,我们来看一下. 一 介绍: 可以使用命令chmod来为文件或目录赋予权限.Linux/Unix 的档案存取权限分为三级 : 档案拥有者.群组.其他.利用 chmod 可以藉以控制档案如何被他人所存取 二 详解 1 此命令有两种使用方法,一种是chmod后加数字,后接文件名 chmod abc file 其中a,b,c各为一个数字,分别表示User.Group.及Other的权限. r=4,w=2,x=1 若要rwx属性则4+2+1=7: 若

JAVA之File类 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件

package ioTest.io3; import java.io.File; /* * 获取一个目录下的所有文件夹和文件,包括子文件夹和子文件 . * 并将文件夹和文件名称打印在控制台上面.并且要显示文件目录的层级 * 注:运用了递归的算法. */ public class FileDemo3 { public static void main(String[] args) { File dir=new File("F:\\黑马学习日程\\"); //File dir=new Fi

列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤

/** * 列出某文件夹及其子文件夹下面的文件,并可根据扩展名过滤 * * @param path */ public static void list(File path) { if (!path.exists()) { System.out.println("文件名称不存在!"); } else { if (path.isFile()) { if (path.getName().toLowerCase().endsWith(".pdf") || path.get

获取文件夹以及子文件夹里面的所有文件

1. 没有后缀名的限制: string[] filePaths = Directory.GetFiles(@"c:\MyDir\"); 2. 有后缀名: string[] filePaths = Directory.GetFiles(@"c:\MyDir\", "*.bmp"); 3. 获取文件夹以及子文件夹里面的所有文件:  设置SearchOption.AllDirectories 属性 string[] filePaths = Direct

Java 遍历指定文件夹及子文件夹下的文件

/** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @param file 要遍历的指定文件夹 * @param collector 符合条件的结果加入到此List<File>中 * @param pathInclude 路径中包括指定的字符串 * @param fileNameInclude 文件名称(不包括扩展名)中包括指定的字符串 * @param extnEquals 文件扩展名为指定字

shell 批量压缩指定文件夹及子文件夹内图片

shell 批量压缩指定文件夹及子文件夹内图片 用户上传的图片,一般都没有经过压缩,造成空间浪费.因此须要编写一个程序,查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理. 代码例如以下: #!/bin/bash # 查找文件夹及子文件夹的图片文件(jpg,gif,png),将大于某值的图片进行压缩处理 # Config folderPath='/home/fdipzone/photo' # 图片文件夹路径 maxSize='1M' # 图片尺寸同意值 max