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)
本程序需要在命令提示符环境中运行,某次运行截图如下:
---------我是分割线----------
重要通知:
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相关推荐
- Python模拟Linux的Crontab, 写个任务计划需求
Python模拟Linux的Crontab, 写个任务计划需求 来具体点 需求:执行一个程序, 程序一直是运行状态, 这里假设是一个函数当程序运行30s的时候, 需要终止程序, 可以用python, ...
- 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 ...
- cp linux 显示进度条_Unix/Linux/Mac os下 文件互传
Unix/Linux/Mac os下 文件互传 说起文件互传,就不得不提命令scp. 他是Secure copy的缩写,使用ssh连接和加密方式, 如果两台机器之间配置了ssh免密登录, 那在使用sc ...
- mac linux网卡驱动下载官网下载,必联BL-LW06-AR无线网卡驱动(Linux/MAC OS)
必联BL-LW06-AR无线网卡驱动(Linux/MAC OS)是一款无线网卡驱动的官方驱动程序,USB系列无线网卡用户众多,该驱动适用于BL-LW06-AR 型号的无线网卡,电脑系统支持Linux ...
- 为什么linux/mac os系统和windows系统不一样(文件系统)
Posix系统调用 windows和linux和mac os底层都采用了不同的文件系统,但是linux和mac os 在所有的文件系统上抽象出来一层虚拟文件系统.所有和文件相关的系统调用在最初的处理上 ...
- MAC OS X 安装Scrapy爬虫工具
前几天玩了下python爬虫Scrapy,用md记录了一篇在OS X上的安装过程,现在抽空分享给大家!(悲剧的是当时写文章的截图当做垃圾删掉了--) 一.打开终端执行命令 sudo easy_inst ...
- windows linux mac os 区别
1.linux的操作比较复杂,windows的比较简单. linux速度比较快,安全性比windows好 但是有很多软件只能在windows里运行 与linux兼容的软件正在开发中. linu ...
- mac安装完python怎么打开-Mac OS系统如何安装python
Mac OS安装python步骤 如果你使用苹果电脑的 Mac OS 系统,下载时,请进入 https://www.python.org/页面,选择Downloads,在弹出的菜单中选择Mac OS ...
- 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.在您的 ...
最新文章
- docker安装chirpstack_docker-compose快速部署ChirpStack
- argis怎么关掉对象捕捉_你和你的网恋对象,都怎么样了?
- CSS实现 全兼容的多列均匀布局问题
- 原来Python破解受密码保护的zip文件这么简单,不保证一定成功
- JDBC模板对象是多例的
- Android软键盘问题
- 13.solr学习速成之IK分词器
- VC6删除项目中的文件
- 编程小白C语言例题4
- 清华大学计算机杜瑜皓,我在清华等你来|2015国际信息学奥赛全球第四名杜瑜皓:人生不搏枉少年...
- 在手机上运行 Python,这款工具比 QPython 还好用~
- thinkphp5项目--个人博客(五)
- matlab里方差分析的盒子图怎么看,Matlab方差分析
- h5案例分享:王中军个人画展:藝術東西,玄如藝術
- execl筛选去重_excel表格如何去除重复数据进行筛选
- 一对一网络课堂教室应用教程实例
- 平均差误法中存在哪些误差?如何平衡这些误差?|小白心理-312/347考研答疑
- Java项目部署到云服务器的思路
- Fedora 20 安装
- HDMI各版本的区别
热门文章
- python打印字符串全排列_【算法15】字符串的全排列
- mysql中最常用的存储引擎有_mysql常用的存储引擎有哪些
- linux安半程序自动确认,利用system-config-kickstart实现半自动化安装
- matlab角点坐标获取,MatLab角点检测(harris经典程序) | 学步园
- java8与hibernate_如何在JPA和Hibernate中使用Java 8 LocalDateTime
- Android什么时候用抽象类什么时候用接口
- 软件工程师工作内容和从业要求
- Python 之 %s字符串、%d整型、%f浮点型
- iOS应用性能调优建议
- 构造方法Constructor