在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)

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

---------我是分割线----------

重要通知:

1、新书《Python程序设计开发宝典》全面上架,可在亚马逊、京东、当当、互动出版物购买。另外,清华大学出版社与赣江图书专营联合推出超低价优惠,原价69元,优惠活动期间39.8元。优惠活动详情(特别说明:本书已出现盗版书籍并已有读者朋友上当,请大家尽量通过正规渠道购买,在购买时一定要仔细辨认并和商家提前沟通):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-14464369246.84.46f16db0roWfX4&id=557107249812&rn=339cbc9df2bac424664103917dedfbd2&abbucket=8&tbpm=3

2、新书《Python程序设计开发宝典》第一次转发积攒活动已结束,将于2日内公布中奖名单,届时中奖的朋友再通过公众号消息告知详细收件地址和电话,出版社统一发货。详情:《Python程序设计开发宝典》全面上架(新书超低价优惠+转发积攒送书)

3、CSDN课程“Python可以这样学(第三季:多线程与多进程编程)”2017年8月23日8:00——18:00之间执行优惠价3元,15课时,3小时44分钟,原价39元,活动期间优惠价3元。详情:http://edu.csdn.net/course/detail/4803

Python模拟Linux/Mac OS工具grep和Windows工具findstr相关推荐

  1. Python模拟Linux的Crontab, 写个任务计划需求

    Python模拟Linux的Crontab, 写个任务计划需求 来具体点 需求:执行一个程序, 程序一直是运行状态, 这里假设是一个函数当程序运行30s的时候, 需要终止程序, 可以用python, ...

  2. ActiveState Komodo IDE v5.2.1.34168 最新版for Linux/Mac OS/Windows 全5大平台

    ActiveState Komodo IDE v5.2.1.34168 最新版for Linux/Mac OS/Windows 全5大平台 转载于:https://www.cnblogs.com/ga ...

  3. cp linux 显示进度条_Unix/Linux/Mac os下 文件互传

    Unix/Linux/Mac os下 文件互传 说起文件互传,就不得不提命令scp. 他是Secure copy的缩写,使用ssh连接和加密方式, 如果两台机器之间配置了ssh免密登录, 那在使用sc ...

  4. mac linux网卡驱动下载官网下载,必联BL-LW06-AR无线网卡驱动(Linux/MAC OS)

    必联BL-LW06-AR无线网卡驱动(Linux/MAC OS)是一款无线网卡驱动的官方驱动程序,USB系列无线网卡用户众多,该驱动适用于BL-LW06-AR 型号的无线网卡,电脑系统支持Linux ...

  5. 为什么linux/mac os系统和windows系统不一样(文件系统)

    Posix系统调用 windows和linux和mac os底层都采用了不同的文件系统,但是linux和mac os 在所有的文件系统上抽象出来一层虚拟文件系统.所有和文件相关的系统调用在最初的处理上 ...

  6. MAC OS X 安装Scrapy爬虫工具

    前几天玩了下python爬虫Scrapy,用md记录了一篇在OS X上的安装过程,现在抽空分享给大家!(悲剧的是当时写文章的截图当做垃圾删掉了--) 一.打开终端执行命令 sudo easy_inst ...

  7. windows linux mac os 区别

    1.linux的操作比较复杂,windows的比较简单.  linux速度比较快,安全性比windows好  但是有很多软件只能在windows里运行  与linux兼容的软件正在开发中.  linu ...

  8. mac安装完python怎么打开-Mac OS系统如何安装python

    Mac OS安装python步骤 如果你使用苹果电脑的 Mac OS 系统,下载时,请进入 https://www.python.org/页面,选择Downloads,在弹出的菜单中选择Mac OS ...

  9. mac安装rstudio_在Windows / Linux / Mac OS上安装R和RStudio入门

    mac安装rstudio 在Windows上安装R (Installing R on Windows) Go to r-project.org on your internet browser.在您的 ...

最新文章

  1. docker安装chirpstack_docker-compose快速部署ChirpStack
  2. argis怎么关掉对象捕捉_你和你的网恋对象,都怎么样了?
  3. CSS实现 全兼容的多列均匀布局问题
  4. 原来Python破解受密码保护的zip文件这么简单,不保证一定成功
  5. JDBC模板对象是多例的
  6. Android软键盘问题
  7. 13.solr学习速成之IK分词器
  8. VC6删除项目中的文件
  9. 编程小白C语言例题4
  10. 清华大学计算机杜瑜皓,我在清华等你来|2015国际信息学奥赛全球第四名杜瑜皓:人生不搏枉少年...
  11. 在手机上运行 Python,这款工具比 QPython 还好用~
  12. thinkphp5项目--个人博客(五)
  13. matlab里方差分析的盒子图怎么看,Matlab方差分析
  14. h5案例分享:王中军个人画展:藝術東西,玄如藝術
  15. execl筛选去重_excel表格如何去除重复数据进行筛选
  16. 一对一网络课堂教室应用教程实例
  17. 平均差误法中存在哪些误差?如何平衡这些误差?|小白心理-312/347考研答疑
  18. Java项目部署到云服务器的思路
  19. Fedora 20 安装
  20. HDMI各版本的区别

热门文章

  1. python打印字符串全排列_【算法15】字符串的全排列
  2. mysql中最常用的存储引擎有_mysql常用的存储引擎有哪些
  3. linux安半程序自动确认,利用system-config-kickstart实现半自动化安装
  4. matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
  5. java8与hibernate_如何在JPA和Hibernate中使用Java 8 LocalDateTime
  6. Android什么时候用抽象类什么时候用接口
  7. 软件工程师工作内容和从业要求
  8. Python 之 %s字符串、%d整型、%f浮点型
  9. iOS应用性能调优建议
  10. 构造方法Constructor