涛哥的Python工具箱之批量删除含指定字符串行
我们在软件研发中不可避免的要用到大量的反复性的繁琐的工作,比如批量改动代码中接口的字符串。批量下载文件并又一次按规则命名。这些工作人工做特别累,尤其是对我这样的懒人来说。
对于一个出色的程序猿来说,反复是最不能接受的事情之中的一个,因此我们要发明工具把反复的工作自己主动化。曾经我是用linux shell脚本来完毕这些事情的,但因为shell脚本语法能力的限制。有些复杂功能无法有效高速的实现,而且写出的代码难以维护,基本属于一次性代码,非常难复用。因此后面慢慢開始尝试用Python完毕一些自己主动化脚本。因为Python语言强大的表现力和严格的书写规范,这些缺点都攻克了!
近期打算把一些日常研发过程用的Python脚本逐步整理出来开源。于是就有了这个专题,希望可以帮助大家摆脱那些繁琐的工作。
代码以最Pythonic的方式实现,工具代码会不断更新,项目git地址 https://github.com/offbye/TaoPyTools ,记得给star啊
今天先分析一个批量删除文件夹指定扩展名的文件里含指定字符串的行的脚本。这个脚本能够用来批量删除代码中的Log语句等。
#!/usr/bin/python2.7
# -*- encoding: UTF-8 -*-
# Copyright 2014 offbye """Delete lines contains some string form all expected extension files in path
批量删除文件夹指定扩展名的文件里含指定字符串的行 能够指定文件夹和文件扩展名
暂时写的一个工具脚本,与App生成系统无关 Usage: python delstr_path.py -p YOUR_PATH -e FILE_EXTENSION -s CONTAIN_STRING_WANT_TO_DELETE
""" __author__ = ['"Xitao":<offbye@gmail.com>'] import sys
import os
import shutil
import getopt def delstr_path(p, findstr, suffix='js'):
# 传递路径及两个字符串作为參数
workdir = p
os.chdir(workdir)
cwd = os.getcwd()
dirs = os.listdir(cwd)
for tmp in dirs:
path = os.path.join(cwd, tmp)
#print 'path=', path
#假设是文件
if os.path.isfile(path):
#推断文件扩展名
if os.path.splitext(tmp)[1][1:] == suffix:
tmp_name = path + '.bak'
tmp_file = open(tmp_name, "w")
with open(path) as f:
lines = f.readlines()
for line in lines:
# 假设包括字符串则跳过,否则写入暂时文件
if line.find(findstr) > -1:
continue
tmp_file.write(line)
tmp_file.close()
# 使用新文件替换原文件
shutil.move(tmp_name, path) #假设是路径,递归
elif os.path.isdir(path):
print("Enter dir: " + path)
delstr_path(path, findstr) if __name__ == "__main__":
print("delele contains str in path")
opts, args = getopt.getopt(sys.argv[1:], "hp:e:s:")
path = ''
find_str = ''
extension = ''
for op, value in opts:
if op == "-p": # 获取路径
path = value
elif op == "-e": # 获取路径
extension = value
elif op == "-s":
find_str = value
print("Delete lines contains {0} form all {1} files in path {2} ".format(find_str, extension, path))
delstr_path(path, find_str, extension)
sys.exit()
elif op == "-h":
print("Usage: python delstr_path.py -p YOUR_PATH -e FILE_EXTENSION -s CONTAIN_STRING_WANT_TO_DELETE")
sys.exit()
涛哥的Python工具箱之批量删除含指定字符串行的更多相关文章
- Editplus 正则表达式 删除含有指定字符串的行 删除注释
1.删除含有指定字符串的行 替换: ^.*(指定字符串).*$ 为空 例如,删除含有"JOIN"的行, 替换: ^.*JOIN.*$ 为空 2.删除//行注释 替换: / ...
- php--jquery操作全选、批量删除、加减行
- jquery操作全选、批量删除、加减行
--------------------------------------------------------------------------------------- html静态页面 --- ...
- 涛哥的Python脚本工具箱之生成带Logo的二维码
近期须要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个. 须要安装qrcode,PIL库 二维码简称 QR Code(Quick Response Code),学名为高速响应 ...
- shell 批量删除所有指定名字的目录
例如删除当前目录下所有名字为DerivedData的目录 find . -name "DerivedData" -type d -exec rm -r "{}" ...
- java如何实现批量删除pdf指定的页数
依赖: <dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>pdfbox-app ...
- 拾遗:Vim 批量删除匹配到的行
删除包含特定字符的行 g/pattern/d (全局删除匹配行) ,5g/pattern/d (删除第1-5行里的匹配行) 删除不包含指定字符的行 v/pattern/d g!/pattern/d ( ...
- .NET批量删除代码前的行号
1 EmEditor Pro.EditPlus .visual studio ,把有行号的代码粘贴进去,按住键盘的Alt键,然后用鼠标拖出选择框列选行号,最后按Delete删除行号; 2 使用正则 ...
- 【VI】如何删除匹配指定字符串的行(已解决)
命令: g/pattern/d 如,删除包含字母 hell 的行 g/hell/d 删除 不 匹配指定字符的行(未验证,有需要的朋友可以试一下) v/pattern/d g!/pattern/d
随机推荐
- openstack token
在openstack的token中,包含如下: 'domain', {'id': None, 'name': None}'expires', datetime.datetime(2017, 8, 9, ...
- UpdateLayeredWindow后,使用Gdi DrawText文字透明的解决办法
来源:http://stackoverflow.com/questions/5309914/updatelayeredwindow-and-drawtext 要点就是在先在memDc DrawText ...
- Python的并发并行[1] -> 线程[0] -> threading 模块
threading模块 / threading Module 1 常量 / Constants Pass 2 函数 / Function 2.1 setprofile()函数 函数调用: thread ...
- A/B Testing with Practice in Python (Part One)
I learned A/B testing from a Youtube vedio. The link is https://www.youtube.com/watch?v=Bu7OqjYk0jM. ...
- springboot引入thymeleaf
springboot引入thymeleaf 1.Thymeleaf使用 @ConfigurationProperties(prefix = "spring.thymeleaf") ...
- SPOJ705 SUBST1 - New Distinct Substrings(后缀数组)
给一个字符串求有多少个不相同子串. 每一个子串一定都是某一个后缀的前缀.由此可以推断出总共有(1+n)*n/2个子串,那么下面的任务就是找这些子串中重复的子串. 在后缀数组中后缀都是排完序的,从sa[ ...
- C++中static、const使用方法简介
众所周知,在c++中,static和const的使用方法是难点,也是重点,值得我们随时温习,所谓温故而知新是也. 下面我们首先说一说static. 1.static的作用 static变量的作用,主要 ...
- 5.Android之NFC介绍
NFC简介: Near Field Communication 近场通信,是一种数据传输技术. 与wifi.蓝牙.红外线等数据传输技术的一个主要差异就是有效距离一般不能超过4cm. NFC支持3种工作 ...
- sql 分组后按时间降序排列再取出每组的第一条记录
原文:sql 分组后按时间降序排列再取出每组的第一条记录 竞价记录表: Aid 为竞拍车辆ID,uid为参与竞价人员ID,BidTime为参与竞拍时间 查询出表中某人参与的所有车辆的最新的一条的竞价记 ...
- RS-232
RS-232 锁定 同义词 rs232一般指RS-232 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . 个人计算机上的通讯接口之一,由电子工业协会(Electronic Industr ...