涛哥的Python工具箱之批量删除含指定字符串行
2014-09-02 12:39
288 查看
我们在软件研发中不可避免的要用到大量的重复性的繁琐的工作,例如批量修改代码中接口的字符串,批量下载文件并重新按规则命名,这些工作人工做特别累,尤其是对我这种懒人来说。
对于一个出色的程序员来说,重复是最不能接受的事情之一,因此我们要发明工具把重复的工作自动化。以前我是用linux shell脚本来完成这些事情的,但由于shell脚本语法能力的限制,有些复杂功能无法有效快速的实现,并且写出的代码难以维护,基本属于一次性代码,很难复用。因此后面慢慢开始尝试用Python完成一些自动化脚本,由于Python语言强大的表现力和严格的书写规范,这些缺点都解决了!
最近打算把一些日常研发过程用的Python脚本逐步整理出来开源,于是就有了这个专题,希望能够帮助大家摆脱那些繁琐的工作。代码以最Pythonic的方式实现,工具代码会不断更新,项目git地址 https://github.com/offbye/TaoPyTools ,记得给star啊
今天先分析一个批量删除目录指定扩展名的文件中含指定字符串的行的脚本,这个脚本可以用来批量删除代码中的Log语句等。
对于一个出色的程序员来说,重复是最不能接受的事情之一,因此我们要发明工具把重复的工作自动化。以前我是用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脚本工具箱之批量替换目录所有指定扩展名的文件中的指定字符串
- Python 批量删除文件夹下面指定类型的所有文件
- python实现指定目录下批量文件的单词计数:串行版本
- Python批量删除指定文件夹下的指定类型的文件
- Python 删除连续出现的指定字符的实例
- UltraEdit怎么批量删除指定字符所在的行
- python3.6深度学习图片集处理项目源代码(为cnn等准备图片集合,批量生成、删除、改名、旋转、调整图片大小,包括删除指定路径下所有文件)
- Python 删除连续出现的指定字符
- python脚本实现文件的批量移动、复制,以及删除指定后缀
- python 按指定规则批量删除多级目录中的文件
- Python rstrip() 删除 string 字符串末尾的指定字符(默认为空格)
- python删除字符串中指定字符的方法
- Python 批量删除文件夹下面指定类型的所有文件
- python 删除字符串中指定字符&去掉空格
- python实现指定目录下批量文件的单词计数:串行版本
- Python批量删除指定目录下的指定类型的文件
- python下需要对指定格式的文件进行批量删除的方法
- 用python批量删除含有相同字符的文件
- 批量删除文件夹下包含指定字段的文件
- 程序员面试指南(第六章) 数组和字符串(C#版) 2.从字符串中删除指定的字符