python3-file的修改实现类似shell中sed的功能

# Auther: Aaron Fan

‘‘‘思路:目的是为了修改yesterday这个文件,但是因为无法直接去修改这个文件,所以需要先把修改好的内容写入高yesterday.new这个文件中,然后再把yesterday.new的内容覆盖到yesterday这个文件中

f = open(‘yesterday‘,‘r‘,encoding=‘utf-8‘)f_new = open(‘yesterday.new‘,‘w‘,encoding=‘utf-8‘)

for line in f:    if "肆意的快乐等我享受" in line:        line = line.replace("肆意的快乐等我享受","肆意的快乐等着Aaron去享受")    f_new.write(line)f.close()f_new.close()

#改进版(实现类似sed的功能):import sysf = open(‘yesterday‘,‘r‘,encoding=‘utf-8‘)f_new = open(‘yesterday.new‘,‘w‘,encoding=‘utf-8‘)

#命令行参数,需要被改的字符串find_str = sys.argv[1]#命令行参数,需要被改成哪个字符串replace_str = sys.argv[2]for line in f:    if find_str in line:        line = line.replace(find_str,replace_str)    f_new.write(line)f.close()f_new.close()#需要在命令行下去测试(源文件yesterday需要存在的),使用以下命令:#python file文件的修改_实现类似sed的功能.py "肆意的快乐等我享受" "肆意的快乐等着Aaron去享受"‘‘‘

#使用with语句的改进版(with的作用就是,当with语句执行完后会自动帮你关闭文件,所以文件操作请用with):import syswith open(‘yesterday‘,‘r‘,encoding=‘utf-8‘) as f, \     open(‘yesterday.new‘,‘w‘,encoding=‘utf-8‘) as f_new:

#命令行参数,需要被改的字符串    find_str = sys.argv[1]    #命令行参数,需要被改成哪个字符串    replace_str = sys.argv[2]    for line in f:        if find_str in line:            line = line.replace(find_str,replace_str)        f_new.write(line)#需要在命令行下去测试(源文件yesterday需要存在的),使用以下命令:#python file文件的修改_实现类似sed的功能.py "肆意的快乐等我享受" "肆意的快乐等着Aaron去享受"
时间: 2024-10-27 05:04:27

python3-file的修改实现类似shell中sed的功能的相关文章

shell中sed用法

简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有 改变,除非你使用重定向存储输出.Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. sed使用参数 [[email protected] ~]# sed [-nefr] [动作] 选项与参数: -n

go语言如何实现类似c++中的多态功能

go语言作为编程语言中的后起之秀,在博采众长的同时又不失个性,在注重运行效率的同时又重视开发效率,不失为一种好的开发语言.在go语言中,没有类的概念,但是仍然可以用struct+interface来实现类的功能,下面的这个简单的例子演示了如何用go来模拟c++中的多态的行为. package main import "os" import "fmt" type Human interface { sayHello() } type Chinese struct {

shell中的变量功能

本地变量: set VARNAME=VALUE:作用域为整个bash进程 局部变量: local VARNAME=VALUE:作用域为当前代码段 环境变量: export VARNAME=VALUE 或者    VARNAME=VALUE                      export VARNAME 位置变量: $1   $2    ...... 特殊变量 : $? :上一条命令的执行状态返回值 程序执行,可能有两类返回值:1.程序执行结果,2程序状态返回代码(0-255),其中0是正

python如何实现像shell中的case功能

我们知道在shell脚本里是支持case语句,当位置参数为空时,会提示我们怎么使用脚本 那么在python怎么实现呢?也使用case吗? python里不支持case语句,但是也有实现case的方法. 这里我们来讲讲getopt模块 介绍说是解析命令行操作 下面是getopt格式: getopt.getopt(args, shortopts, longopts=[]) args指的是当前脚本接收的参数,它是一个列表,可以通过sys.argv获得 shortopts 是短参数 啥是短参数啊? 类似

shell中sed的使用

1.在命令行定义编辑器命令 命令格式 sed options script file sed不会修改文本文件的数据,他只会将修改后的数据发送到STDOUT. 2.在命令行上使用多个编辑器命令 将命令放在一个文件中 3.s命令使用替换标记 .数字代表新文本将替换第几处模式匹配的地方 .g,替换所有的 .p,原来的内容打印出来 .w file,将替换的结果写到文件. -n命令禁止打印模式空间,-n和p一起使用只打印替换的行. 4.使用地址 4.1指定行 sed '2s/dog/cat/' data1

shell中sed命令

sed -i '/cd ${LDIR_DEST}\/webextend\/pc && ln -s \/hard\/www_winclient\/bboxpc.exe ./a\ \tcd ${LDIR_DEST}\/webextend\/pc && ln -s \/hard\/www_winclient\/'$i' .' #参考别人后自己改的,主要是加了个变量 sed -i '4i dfsdfdsad' xxx.txt #Insert contents between the

Python3.5 day3作业一:实现简单的shell sed替换功能

需求: 1.使python具有shell中sed替换功能. #!/usr/bin/env python #_*_conding:utf-8_*_ #sys模块用于传递参数,os模块用于与系统交互. import sys,os old_file = sys.argv[1] new_file = sys.argv[2] file_path = sys.argv[3] f = open(file_path,"r") f1 = open("back","a+&qu

shell脚本:批量修改文件名(删除文件名中字符)

shell脚本:批量修改文件名(文件名中添加字符) 上一篇写过批量修改文件名(文件名中添加字符),工作中还存在这样的需求,批量修改文件名,删除文件名中的某些字符: 举例如下:批量改名,删除文件名中多余字符 目录下文件名为如下,要求去掉_finished. stu_102999_1_finished.jpg stu_102999_2_finished.jpg stu_102999_3_finished.jpg stu_102999_4_finished.jpg stu_102999_5_finis

Python3 Tkinter基础 Frame bind 绑定敲击键盘事件 将按键打印到Shell中

镇场诗: 清心感悟智慧语,不着世间名与利.学水处下纳百川,舍尽贡高我慢意. 学有小成返哺根,愿铸一良心博客.诚心于此写经验,愿见文者得启发.------------------------------------------ code: from tkinter import * root=Tk() #创建一个框架,在这个框架中响应事件 frame=Frame(root, width=200,height=200, background='green') def callBack(event):