专栏首页Python小屋Python模拟Linux/Mac OS工具grep和Windows工具findstr

Python模拟Linux/Mac OS工具grep和Windows工具findstr

在Linux和Mac OS系统中有个工具grep可以用来查找哪些文件中包含特定的字符串,Windows系统中也有类似的工具findstr,本文代码模拟了这两个工具的工作原理。

from os import listdir from sys import argv

def prepare(fileNames): for item in fileNames: # 把类似于*.txt之类的文件名替换成真实文件名 # 不考虑类似于abc*.py的文件名 if '*' in item: index = item.index('.') fileNames.remove(item) temp = [fn for fn in listdir()\ if fn.endswith(item[index:])] fileNames.extend(temp) def main(desStr, fileNames): result = [] for filename in fileNames: try: # 使用UTF8编码打开文本文件 # 可以根据需要进行改写或扩充 with open(filename, encoding='utf8') as fp: for line in fp: if desStr in line: result.append(filename) break except: pass return result

# 要查找的字符串 desStr = argv[1] # 要查找的全部文件 fileNames = argv[2:]

# 预处理 prepare(fileNames)

# 进行查找并输出结果 result = main(desStr, fileNames) for item in result: print(item)

本程序需要在命令提示符环境中运行,某次运行截图如下:

本文分享自微信公众号 - Python小屋(Python_xiaowu),作者:董付国

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-08-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用Python简单模拟Linux系统的tree工具

    Linux系统中有个tree工具可以用比较好看的形式来显示指定文件夹的目录结构。例如下图(来自于网络): ? 本文代码使用Python对Linux系统的tree...

    Python小屋屋主
  • Python稀疏矩阵运算库scipy.sparse用法精要

    1、稀疏矩阵的常见存储形式 bsr_matrix(arg1[, shape, dtype, copy, blocksize]) Block Sparse Row...

    Python小屋屋主
  • Python计算前n个自然数的阶乘和

    本文来源于粉丝私信的问题,目的在于计算result = 1!+2!+3!+...+n!,因为代码比较简单,没加注释,有问题可以留言交流。文中给出了2段代码,在实...

    Python小屋屋主
  • 无阻塞加载脚本

    通常加载页面的时候,对于组件是并行下载的,现代大部分浏览器对于Js同样也是支持并行下载,但是在脚本下载、解析并执行完毕之前,不会开始下载任何其他内容。

    菜的黑人牙膏
  • 【PyTorch】推荐收藏!史上最全的 PyTorch trick 集锦

    Keras有一个简洁的API来查看模型的每一层输出尺寸,这在调试网络时非常有用。现在在PyTorch中也可以实现这个功能。

    zenRRan
  • Storm容错机制(一):ACK机制

    我们知道 Storm 是一个常驻服务,消息源源不断的来,他源源不断的处理,那肯定在有些情况下会导致消息的不正确处理,比如worker进程挂掉了,那么正在被处理的...

    solve
  • 2-VIV-Android控件之res资源加载

    张风捷特烈
  • iOS帮客户打包App上架的正确姿势

    帮客户开发的App,要以客户名义(客户开发者账号)上架,但是客户又不提供账号密码,然后也不能在iTunes Connect邀请你作为开发者。

    iOS Development
  • Python中字典dict

    py3study
  • R语言 循环作图

    用户1359560

扫码关注云+社区

领取腾讯云代金券