python 检索文件内容工具
公司内部需求一个工具检索目录下的文件在另外的目录中使用次数, 用来优化包体的大小。
此代码效率并不高效, 另添加对应的 后缀检索。 用python 实现比较快速, 另还有缺点是只支持 utf-8 格式内容。
各位用到的可以自己摘一下。
(本人习惯使用c\c++,目前发现这种脚本类的确实实现方便,接口齐全, 我能想到的接口, 真的全都有, 用python 写工具, 应该是一个调试起来还可以的过程)
代码如下:
#coding=utf-8 import os
import sys
import time #private:
def checkSuffix(strFileName, strCompareSuffix):
strPreFileName = ''
strFileSuffix = ''
bIsCheckOk = False
strArray = strFileName.split('.')
if len(strArray) > 1:
strPreFileName = strArray[0]
strFileSuffix = strArray[1]
#print(strFileSuffix)
#print(strCompareSuffix)
if strCompareSuffix == '*' or strFileSuffix == strCompareSuffix:
bIsCheckOk = True
return bIsCheckOk, strPreFileName def readFileName(file_dir):
for root, dirs, files in os.walk(file_dir):
return files,dirs, root
return '', '', '' def findString(pathFile, findKey):
#print("open pathFile:", pathFile)
fp = open(pathFile, "r", encoding='utf-8')
strr = fp.read()
if(strr.find(findKey) != -1):
return True
return False def startFind(files, dirs, root, findKey, strSuffix):
for fileName in files:
try:
bIsCheckOk, strPreFileName = checkSuffix(fileName, strSuffix)
if bIsCheckOk == False:
#print("fileName", fileName, " is not suffx :", strSuffix)
continue
if(findString(root + "\\" + fileName, findKey)):
return True, fileName
except Exception as err:
continue for jj in dirs:
fi, di, ro = readFileName(root + jj)
bIsFind, fileName = startFind(fi, di, ro, findKey, strSuffix)
if(bIsFind == True):
return bIsFind, fileName
return False, '' #public:
def findUse(dirPath, findKey, strSuffix):
files, dirs, root = readFileName(dirPath)
return startFind(files, dirs, root, findKey, strSuffix) def getDirsFiles(dirPath):
dirfiles = [];
for root, dirs, files in os.walk(dirPath):
dirfiles += files;
return dirfiles def writeResult(strFileName, strWriteSign, list):
fp = open(strFileName, 'a+')
fp.write(strWriteSign)
#fp.writelines(list)
for str in list:
fp.write(str)
fp.write('\n')
fp.close() if __name__ == '__main__':
"""
findDir = u"E:\\mmo2018001\\artist\\open\\ui\\free\\"
findAimDir = u"E:\\mmo2018001\\artist\\open\\effect\\"
findsuffix = "prefab" # 哪些要搜索的文件的后缀
findAimsuffix = "*" # 搜索那些后缀的文件
"""
bt = time.clock() # 记录时间 findDir = sys.argv[1]
findAimDir = sys.argv[2]
findsuffix = sys.argv[3]
findAimsuffix = sys.argv[4] thisPath = os.getcwd()
print("this path is ", thisPath)
print(findDir)
print(findAimDir)
print(findsuffix)
print(findAimsuffix) dirFiles = getDirsFiles(findAimDir)
useFiles = []
notUseFiles = []
nLen = len(dirFiles)
i = 0
for filesName in dirFiles : bIsCheckOk, strPreFileName = checkSuffix(filesName, findsuffix)
if bIsCheckOk == True:
isFind, fileName = findUse(findDir, strPreFileName, findAimsuffix)
#print("filesName:\t", filesName, " \nIsFind:\t\t", isFind)
if(isFind):
useFiles.append(filesName)
else:
notUseFiles.append(filesName)
i += 1
p = round(i * 100 / nLen)
duration = round(time.clock() - bt, 2)
remaining = round(duration * 100 / (0.01 + p) - duration, 2)
print("进度:{0}%,已耗时:{1}s,预计剩余时间:{2}s".format(p, duration, remaining), end="\r") writePath = thisPath + "\\Result.txt"
try:
os.remove(writePath)
except Exception as err:
print(err)
writeResult(writePath, "***************NotUseFiles:***************\n", notUseFiles)
writeResult(writePath, "***************UseFiles:***************\n", useFiles)
useTime = time.clock() - bt
print("已完成 总耗时:", useTime)
python 检索文件内容工具的更多相关文章
- Linux中利用grep命令如何检索文件内容详解
前言 Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命令,同时vi命令也支持文件内容检索.下面来一起看看Linux利用grep命令检索文件内容的详细介绍. 方法 ...
- Python 输出文件内容到网络端口
Python 输出文件内容到网络端口 $ cat mySocketTest.py import sys import time import socket if __name__ == "_ ...
- python 修改文件内容
python 修改文件内容 一.修改原文件方式 1 def alter(file,old_str,new_str): 2 """ 3 替换文件中的字符串 4 :param ...
- python实现文件搜索工具(简易版)
在python学习过程中有一次需要进行GUI 的绘制, 而在python中有自带的库tkinter可以用来简单的GUI编写,于是转而学习tkinter库的使用. 学以致用,现在试着编写一个简单的磁文件 ...
- Linux中通过grep命令检索文件内容和指定内容前后几行
原文链接: https://www.linuxidc.com/Linux/2017-11/148390.htm Linux系统中搜索.查找文件中的内容,一般最常用的是grep命令,另外还有egrep命 ...
- python改动文件内容,不须要read,write多个动作。
python 要改动文件内容,经常使用 是先read.后write , 再 rename.非常不爽. 比方:须要 把 yuv_dir ="../HD/" # &q ...
- python 修改文件内容3种方法
原文链接:https://www.cnblogs.com/wc-chan/p/8085452.html def alter(file,old_str,new_str): ""&qu ...
- python ini文件内容的读取
(1)新建一个项目,再次新建一个文件 test_cfg.ini (2)再次新建 get_test_cfg.py,用来读取/写入/更改 ini的文件内容 #!/usr/bin/env python # ...
- Python修改文件内容
工作中要写个脚本来修改文件的内容,然后就写了一个刷子: #coding:utf8 import os def modify_file(old_file, new_version, old_versio ...
随机推荐
- 提高编译速度! 第一次运行需要注释掉,不然会报错,因为需要编译SO库文件 !
// 提高编译速度! 第一次运行需要注释掉,不然会报错,因为需要编译SO库文件 ! tasks.whenTaskAdded { task -> if (task.name.contains(&q ...
- Java线程变量问题-ThreadLocal
关于Java线程问题,在博客上看到一篇文章挺好的: https://blog.csdn.net/w172087242/article/details/83375022#23_ThreadLocal_1 ...
- 由软件构造引申的OOP与POP的心得体会
在大一初学C语言的时候,所解决的问题都是一些轻量级的简单问题,当时写过一个教学管理系统.这个教学管理系统的功能很简单,思想就是“流水线”:按部就班的实现所有流程.要完成整个教学管理系统,实际上就是完成 ...
- 搜索相关性算法在 DiDi Food 中的搜索
导读:今天给大家分享的主题是搜索匹配问题在 DiDi Food 中的一些探索与应用.本文首先介绍了搜索相关性的一些背景,之后介绍了业界常见的三种匹配模型,以及在DiDi Food业务中的模型效果对比. ...
- [每日一题2020.06.13]leetcode #739 #15 单调栈 双指针查找
739 每日温度 ( 单调栈 ) 题目 : https://leetcode-cn.com/problems/daily-temperatures/ 题意 : 找到数组每一个元素之后第一个大于它的元素 ...
- 一篇看懂Docker
松勤教育2020.4.20 我要分享 Docker 是什么? Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它是目前最流行的 Linux 容器解决方案. Dock ...
- JavaScript中的事件委托(转至大佬)
转至:https://www.cnblogs.com/liugang-vip/p/5616484.html 起因: 1.这是前端面试的经典题型,要去找工作的小伙伴看看还是有帮助的: 2.其实我一直都没 ...
- CODING DevOps 系列第四课:DevOps 中的质量内建实践
什么是质量内建 随着时间的推移,我们项目的开发效率会逐渐降低,直到几年之后整个项目可能就无法维护,只能推倒重来.具体的表现首先就是随着时间推移,我们会发现整个需求列表里面能做的需求越来越少,因为每当我 ...
- nuget 包是如何还原包的
nuget 是如何还原包的 Intro 一直以来从来都是用 nuget 包,最近想折腾一个东西,需要自己搞一个 nuget 包的解析,用户指定 nuget 包的名称和版本,然后去解析对应的 nuget ...
- http 的8中请求方式:
http 的8中请求方式: 1.OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性 2.HEAD 向服务器索与GET请求相一致 ...