3-1 实现简单的shell sed替换功能
1.需求
程序1: 实现简单的shell sed替换功能
file1 的内容copy到file2
输入参数./sed.py $1 $2
$1替换成$2 (把a替换成% )
2.个人思路
- open file 1 2
- file1 内容 copy 到 file2
- read 每一行 ,
- if a in line:
- a替换%
- 关闭file1 file2
代码
- f1 = open('yes.txt','r+',encoding='utf-8')
- f_new = open('yes2.txt','w',encoding='utf-8')
- for line in f1.readlines():
- line = line.replace('a','%').strip()
- print(line)
- f_new.writelines(line)
- f1.close()
- f_new.close()
3.个人心得
3.1 读取文件
方法1:记得f1.close() f_new.close()
- f1 = open('yes.txt','r+',encoding='utf-8')
- f_new = open('yes2.txt','w',encoding='utf-8')
方法2:自动帮你关闭文件
- with open('yes.txt','r+',encoding='utf-8') as f1:
- with open('yes2.txt','w',encoding='utf-8') as f_new:
- for line in f1.readlines():
3.2 copy全部
方法1:f1 的内容copy到f_new
- #全文复制
- f1 = open('yes.txt','r+',encoding='utf-8')
f2 = open('yes2.txt','w',encoding='utf-8')
- for line in f1.readlines():
print(line.strip())
f_new.writelines(line)- #此时光标已经到末尾了
方法2:shutil模块(文本处理,压缩)
- import shutil
- shutil.copyfile("yes.txt","yes2.txt")
3.3 文件替换
读取 f1 的每行,a替换成%,并且写入到f_new
- f1 = open('yes.txt','r+',encoding='utf-8')
- f2 = open('yes2.txt','w',encoding='utf-8')
- for line in f1.readlines():
- line = line.replace('a','%').strip()
- print(line)
- f_new.writelines(line)
3.4 光标问题
注意:全文复制,(读取每一行,然后copy到 f2 ),此时光标已经到文件末尾! 执行替换时,已经读取不到内容
错误代码
- # coding=utf-8
- #打开文件
- f1 = open('yes.txt','r+',encoding='utf-8')
- f_new = open('yes2.txt','w',encoding='utf-8')
- #全文复制
- for line in f1.readlines():
- print(line.strip())
- f_new.writelines(line)
- #光标已经到末尾了
- a = f1.readlines() # a[]
- #替换
- for line in f1.readlines():
- line = line.replace("a",'%')
- print(line.strip())
- f_new.writelines(line)
3.5 sys模块 传入参数
传入参数 sys.argv[1]
- import sys
- #打开文件
- with open('yes.txt','r+',encoding='utf-8') as f1:
- with open('yes2.txt','w',encoding='utf-8') as f_new:
- find_str = sys.argv[1]
- replace_str = sys.argv[2]
cmd 执行代码时,可以带参数
- D:\PycharmProjects\s14\作业>python "3-1 shell sed功能2.1.py" a %
4. 完整代码
- # coding=utf-8
- import sys
- #打开文件
- with open('yes.txt','r+',encoding='utf-8') as f1:
- with open('yes2.txt','w',encoding='utf-8') as f_new:
- find_str = sys.argv[1]
- replace_str = sys.argv[2]
- #替换
- for line in f1.readlines():
- line = line.replace(find_str,replace_str).strip()
- print(line)
- f_new.writelines(line)
- f1.close()
- f_new.close()
3-1 实现简单的shell sed替换功能的更多相关文章
- Python3学习之路~2.8 文件操作实现简单的shell sed替换功能
程序:实现简单的shell sed替换功能 #实现简单的shell sed替换功能,保存为file_sed.py #打开命令行输入python file_sed.py 我 Alex,回车后会把文件中的 ...
- 4.实现简单的shell sed替换功能
# -*- coding:utf-8 -*- # Author: JACK ZHAO # 程序1: 实现简单的shell sed替换功能 import sys #判断参数个数 if len(sys.a ...
- Python3.5 day3作业一:实现简单的shell sed替换功能
需求: 1.使python具有shell中sed替换功能. #!/usr/bin/env python #_*_conding:utf-8_*_ #sys模块用于传递参数,os模块用于与系统交互. i ...
- 实现简单的shell sed替换功能
通过脚本传参数可以实现替换 # -*-coding:utf-8-*- # Author:sunhao import sys f = open('yesterday','r',encoding='utf ...
- python基础实现简单的shell sed 替换功能
#coding:utf-8 from pygame.draw import lines import sys,os old_file = sys.argv[1] #接受外部设备上的参数 new_fil ...
- python 3.x 写 shell sed 替换功能
shell sed 替换功能 f1 = open('yesterday','r',encoding='utf-8') f2 = open('yesterday2','w',encoding='utf- ...
- 实现简单sed替换功能的python脚本
#可以用来修改配置文件参数 # -*- coding:utf-8 -*- import os,sys old = sys.argv[1] new = sys.argv[2] file = sys.ar ...
- sed替换 - 含反斜杠(/)和Shell变量
sed替换 - 含反斜杠(/)和Shell变量 摘自: https://blog.csdn.net/zhenyongyuan123/article/details/6616263 2011年07月19 ...
- shell脚本学习(3)sed替换
1 sed 替换 1格式: 's/原字符串/新字符串/' 输入源 2正确参考: sed ’s/as/AS/' do.txt 改变字符串as为AS,不会改输入源的文件. 匹配每行第一次匹配的 ...
随机推荐
- iOS设计模式 - 代理
iOS设计模式 - 代理 原理图 说明 1. 代理模式大家都用过,但用抽象基类NSProxy实现代理估计鲜有人用 2. 本人用NSProxy实现了代理模式,对于理解消息转发机制有点帮助 源码 http ...
- [C++] 用Xcode来写C++程序[3] Constants
用Xcode来写C++程序[3] Constants 以下是一些基本数据的含义: 75 // int 75u // unsigned int 75l // long 75ul // unsigned ...
- UNIX高级环境编程(1)File I/O
引言: Unix系统中主要的文件操作包括: open read write lseek close unbuffered IO和standard I/O相对应,后面的章节我们会讨论这两者的区别. 在讨 ...
- Spring+微信小程序 卡券打通
近期公司项目需要使用到微信卡券模块,主要做的是在小程序打通微信卡券,实现小程序领取卡券的功能效果. 简单说下涉及的东西: Springboot—使用springboot做后端接口,非常便捷 并且根本是 ...
- SQL语句.md
数据库操作 create mysql> create database study_2; Query OK, 1 row affected (0.00 sec) mysql> show c ...
- P1710 地铁涨价
题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...
- [USACO08NOV]Cheering up the Cow
嘟嘟嘟 这道题删完边后是一棵树,那么一定和最小生成树有关啦. 考虑最后的生成树,无论从哪一个点出发,每一条边都会访问两次,而且在看一看样例,会发现走第w条边(u, v)的代价是L[w] * 2 + c ...
- Day4 MySql触发器视图索引以及设计优化
触发器 MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 通过事件触发,不能传参 语法 CREA ...
- J - Relief grain HDU - 5029
Relief grain Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others)T ...
- virtualbox+vagrant学习-3-Vagrant Share-2-HTTP Sharing
HTTP Sharing Vagrant Share可以创建一个可公开访问的URL端点来访问在Vagrant环境中运行的HTTP服务器.这被称为“HTTP共享”,在使用Vagrant Share时默认 ...