python批量删除行_涛哥的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":']

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值