涛哥的Python工具箱之批量删除含指定字符串行

pandas删除含有特定数值的行或列 使用pandas处理数据时,如何实现删除/选取某列含有特殊数值的行或者某行含有特殊数值的列,以及如何去除含有空值的行或列 立即下载

       我们在软件研发中不可避免的要用到大量的重复性的繁琐的工作,例如批量修改代码中接口的字符串,批量下载文件并重新按规则命名,这些工作人工做特别累,尤其是对我这种懒人来说。

       对于一个出色的程序员来说,重复是最不能接受的事情之一,因此我们要发明工具把重复的工作自动化。以前我是用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()


VASP编译疑难解析—手动配置icx路径解决libintel64报错 本文针对VASP编译过程中执行`make libintel64`时遇到的`icx: 没有那个文件或目录`报错,提供了详细的解决方案。核心在于手动定位Intel oneAPI编译器的绝对路径,并修改makefile中的编译器变量,从而解决因系统PATH环境变量未正确设置导致的libintel64编译失败问题。 阅读详情

相关推荐

使用mmdetection快速复现计算机视觉顶会论文

使用mmdetection中支持的算法运行自定义数据集

m0_56896669的博客 2424

涛哥的Python脚本工具箱之批量替换目录所有指定扩展名的文件中的指定字符串

今天发布刚完成的涛哥的Python脚本工具箱之批量替换目录所有指定扩展名的文件中的指定字符串,命令行参数处理改用目前比较好用的argparse库,Python代码如下: #!/usr/bin/python2.7 # -*- encoding: UTF-8 -*- # Copyright 2014 offbye@gmail.com """replace old string with

西涛offbye-移动全栈技术博客 2773

Basilisk vs. STK:开源航天仿真工具在Windows上的实战体验与生态对比

本文对比了开源航天仿真工具Basilisk与商业软件STK在Windows平台上的实战体验与生态差异。从技术架构、安装配置、使用成本、功能覆盖、社区生态到适用场景,全面分析了二者的优劣势,为航天工程师和研究人员提供选型参考。Basilisk在性能和扩展性上表现突出,而STK在可视化与专业模块上更具优势。

weixin_30632089的博客 589

涛哥的Python脚本工具箱之生成带Logo的二维码

最近需要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个。需要安装qrcode,PIL库 二维码简称 QR Code(Quick Response Code),学名为快速响应矩阵码,是二维条码的一种,由日本的 Denso Wave 公司于 1994 年发明。现随着智能手机的普及,已广泛应用于平常生活中,例如商品信息查询、社交好友互动、网络地址访问等等。 安装

西涛offbye-移动全栈技术博客 3523

[信号与系统]一阶与二阶连续时间系统和离散时间系统

定义:一阶连续时间系统由一阶线性常系数微分方程描述: dy(t)dt+ay(t)=bx(t) \frac{dy(t)}{dt} + a y(t) = b x(t) dtdy(t)​+ay(t)=bx(t)时间常数:时间常数 τ=1a\tau = \frac{1}{a}τ=a1​ 是系统响应速度的衡量指标。时间常数越小,系统响应越快。冲激响应:一阶系统的冲激响应是指数衰减或增长的形式。例如,对于一个单位冲激输入,响应为: h(t)=bae−at h(t) = \frac{b}{a} e^{-at} h(t)=

Andius的博客 2122

避开这些坑!baostock获取股票数据时最容易犯的5个错误(Python实战)

本文针对使用Python和baostock库获取股票历史数据时常见的五大陷阱,提供了实战解决方案。重点剖析了登录状态验证、参数配置、数据解析、批量操作效率及数据一致性校验等关键环节,帮助开发者构建稳健高效的数据获取流程,避免因细节疏忽导致的数据错误或性能瓶颈。

websocket5live的博客 1444

【python】文本处理:删除包含关键词的行、删除指定列、删除指定字符、替换关键字……

目录 删除文件中包含关键词的行 删除特定字符 1.1、删除特定位置的字符 1.2、删除指定字符 正则表达式 删除csv文件中的某几列 读取txt文件并取其某一列数据 替换文件里的字符 删除文件中包含关键词的行 带中文 删除匹配“月”的行 import re lineList = [] matchPattern = re.compile(r'月') file =......

我的笔记本 3万+

究竟什么是虚拟同步机???虚拟同步机巨简单理解

同步发电机定子铁芯的内圆均匀分布着定子槽,槽内按一定规律嵌放着对称的三相绕组U1-U2、V1-V2、W1-W2,如图1所示。工作原理转子铁芯上装有制成一定形状的成对磁极,磁极上绕有励磁绕组。励磁绕组上通直流电时,会在电机的气隙中形成极性相间的分布磁场,称为励磁磁场。当原动机拖动转子以恒定速度旋转时,励磁磁场随转轴一起旋转并顺次切割定子各相绕组。定子电枢绕组中将会感应出大小和方向周期性变化的三相对称正弦感应电动势。各相电动势大小相等,相位各差120°。

weixin_53126442的博客 2609

python 删除特定字符所在行,你还有其他方法吗?

查询文件中含有特殊字符串的行 #!/usr/bin/python # -*- coding:utf-8 -*- import re file1 = open('test.txt','r+') istxt = re.compile(r'.*if.*',re.I) for line in file1.readlines(): line = line.strip() ifstr = re.f...

python学习者的博客 3134

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标 1 超级指标 指标公式:买卖提示非常明显(适合通达信) 指标源码如下: M:3 100 60 N 3 100 30 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M));RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,5,1); D:=SMA(K,3,1); J:=3*K-2*D;主力

m0_60244077的博客 3万+

【机器学习与数据挖掘实战 | 医疗】案例18:基于Apriori算法的中医证型关联规则分析

本案例针对三阴乳腺癌患者,经问卷调查收集数据并筛选处理形成原数据,经清洗、特征选择与变换后,构建Apriori模型,基于业务理解与建模结果,分析患者症状与中医证型关联,并据症状给出建议 。

Morse_Chen的博客 1383

python批量删除特定字符_涛哥的Python工具箱之批量删除含指定字符串行

我们在软件研发中不可避免的要用到大量的反复性的繁琐的工作,比如批量改动代码中接口的字符串。批量下载文件并又一次按规则命名。这些工作人工做特别累,尤其是对我这样的懒人来说。对于一个出色的程序猿来说,反复是最不能接受的事情之中的一个,因此我们要发明工具把反复的工作自己主动化。曾经我是用linux shell脚本来完毕这些事情的,但因为shell脚本语法能力的限制。有些复杂功能无法有效高速的实现,而且写...

weixin_39970689的博客 804

LDRA Testbed(TBrun)软件单元测试_操作指南

通过前面的几篇文章,使用Testbed进行软件静态分析的内容已经基本讲解完毕。从这篇文章开始,将继续讲解如何使用TBrun进行软件单元测试、软件集成测试。

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 7786

python批量删除行_涛哥的Python工具箱之批量删除含指定字符串行

我们在软件研发中不可避免的要用到大量的反复性的繁琐的工作,比如批量改动代码中接口的字符串。批量下载文件并又一次按规则命名。这些工作人工做特别累,尤其是对我这样的懒人来说。对于一个出色的程序猿来说,反复是最不能接受的事情之中的一个,因此我们要发明工具把反复的工作自己主动化。曾经我是用linux shell脚本来完毕这些事情的,但因为shell脚本语法能力的限制。有些复杂功能无法有效高速的实现,而且写...

weixin_39811150的博客 321

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

python批量删除字段_涛哥的Python工具箱之批量删除含指定字符串行

我们在软件研发中不可避免的要用到大量的反复性的繁琐的工作,比如批量改动代码中接口的字符串。批量下载文件并又一次按规则命名。这些工作人工做特别累,尤其是对我这样的懒人来说。对于一个出色的程序猿来说,反复是最不能接受的事情之中的一个,因此我们要发明工具把反复的工作自己主动化。曾经我是用linux shell脚本来完毕这些事情的,但因为shell脚本语法能力的限制。有些复杂功能无法有效高速的实现,而且写...

weixin_39601641的博客 271

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

python删除某行

可以一行一行的读,然后往结果文件里面写,不要写要删除的那些行。。。 --如:删除内容包含-A INPUT -m state --state NEW -m tcp -p tcp --dport 3307 -j ACCEPT的所有行: with open('/download/python_practice/g.sh','r') as r:     lines=r.readlines() wi

雅冰石的专栏 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python文件中删除行

上一篇提到如何用python修改文本文档,但实际遇到的问题是如何删除游戏存档中的中的一些重复内容,其实将第二个字符串换成一个空字符串“”即可: 1 def alter(file,old_str,new_str): 2 """ 3 替换文件中的字符串 4 :param file:文件名 5 :param old_str:旧字符串 ...

aoc68397的博客 788

Python实现数据筛选(打印含乱码行,保存包含特定字符串行)

一、需求:工作的时候监控下来的S19或其他通信文件需要提取出含有不符合字符的行(一般通信文件含0~9,a-f,或A-F字符符合要求,S19还包含大写或小写‘S’字符其他字符不符合要求) 二、字符串操作知识 删除字符串中的空格或者回车方法 1)replace()方法 line.replace(’ ‘,’’) #替换字符串中空格 line.replace(’ \n’,’’) #替换字符串中换行 line.replace(’ \r’,’’) #替换字符串中回车 2)re.sub() import re re.su

m0_49047167的博客 1197

python删除csv某一行,使用python删除csv文件中的特定行

I am trying to remove a row from a csv file if the 2nd column matches a string. My csv file has the following information:Name15 DogI want the row with "Name" in it removed. The code I am using is:im...

weixin_32233079的博客 2268

python--文件操作删除某行

使用continue跳过本次写循环就可以了 #文本内容 Yesterday when I was young 昨日当我年少轻狂 The tasting of life was sweet 生命的滋味是甜的 As rain upon my tongue tasting I lived by night and shunned the naked light of day tas...

weixin_30394333的博客 914

在 Python 中如何删除文本文件中的特定行

使用另一个 with 语句在写入模式下再次打开文件,使用 for 循环遍历刚才读取的内容并写入文件。为了能够匹配内容,还需要使用 strip() 函数删除每行末尾的换行符,再进行比较。使用 for 循环遍历刚才读取的内容,使用变量来跟踪当前行号,当到达要删除的行时,跳过该行的写入。在写入文件时,使用 find() 检测是否包含正在寻找的字符串,如果发现给定的字符串,跳过该行的写入。需要删除文档中最短的一行,可以通过使用 len() 方法来查找每行的长度,使用循环找到长度最短的一行,记录行号。

众享软记 3772

python删除指定字符串之间所有行_python:删除包含字符串的pandas数据帧中的所有行...

您可以应用一个功能,以行方式测试您的DataFrame是否存在字符串,例如,说df是您的DataFramerows_with_strings = df.apply(lambda row :any([ isinstance(e, basestring) for e in row ]), axis=1)这将为您的DataFrame创建一个掩码,指示哪些行至少包含一个字符串.因此,您可以通过相对的掩码...

weixin_39913105的博客 266

python提取包含特定字符串的行_python – 删除pandas DataFrame中的行,其中行包含列表中的字符串?...

我知道如何从单列(‘From’)pandas DataFrame中删除行,其中行包含一个字符串,例如给定df和somestring:df = df[~df.From.str.contains(someString)]现在我想做类似的事情,但这次我希望删除任何包含另一个列表的任何元素中的字符串的行.如果我不使用熊猫,我会使用和if … not … in approach.但是我如何利用熊猫自己的功能...

weixin_39756192的博客 596

python使用os和shutil模块进行文件创建,删除,移动,复制,重命名

python使用os和shutil模块进行文件创建,删除,移动,复制,重命名文章目录: os.sep 可以取代操作系统特定的路径分隔符。windows下为 '\\' os.name 字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix' os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路...

求真、务实 3498
上一篇: ionic框架对Android返回键的处理
下一篇: Python的包管理工具
offbye
offbye 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄24年 1309粉丝 252原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

offbye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值