1.需求

程序1: 实现简单的shell sed替换功能

  file1 的内容copy到file2

  输入参数./sed.py  $1  $2

    $1替换成$2 (把a替换成% )

2.个人思路

  1. open file 1 2
  2.  
  3. file1 内容 copy file2
  4.  
  5. read 每一行
  6.  
  7. if a in line
  8.  
  9. a替换%
  10.  
  11. 关闭file1 file2

  

代码

  1. f1 = open('yes.txt','r+',encoding='utf-8')
  2. f_new = open('yes2.txt','w',encoding='utf-8')
  3.  
  4. for line in f1.readlines():
  5. line = line.replace('a','%').strip()
  6. print(line)
  7. f_new.writelines(line)
  8.  
  9. f1.close()
  10. f_new.close()

  

 

3.个人心得

3.1 读取文件

  方法1:记得f1.close()  f_new.close()

  1. f1 = open('yes.txt','r+',encoding='utf-8')
  2. f_new = open('yes2.txt','w',encoding='utf-8')

  

  方法2:自动帮你关闭文件

  1. with open('yes.txt','r+',encoding='utf-8') as f1:
  2. with open('yes2.txt','w',encoding='utf-8') as f_new:
  3.  
  4. for line in f1.readlines():

  

3.2  copy全部

方法1:f1 的内容copy到f_new

  1. #全文复制
  1. f1 = open('yes.txt','r+',encoding='utf-8')
    f2 = open('yes2.txt','w',encoding='utf-8')
  1. for line in f1.readlines():
      print(line.strip())
      f_new.writelines(line)
  2.  
  3. #此时光标已经到末尾了

  

方法2:shutil模块(文本处理,压缩)

  1. import shutil
  2. shutil.copyfile("yes.txt","yes2.txt")

3.3 文件替换

读取  f1 的每行,a替换成%,并且写入到f_new  

  1. f1 = open('yes.txt','r+',encoding='utf-8')
  2. f2 = open('yes2.txt','w',encoding='utf-8')
  3.  
  4. for line in f1.readlines():
  5. line = line.replace('a','%').strip()
  6. print(line)
  7. f_new.writelines(line)

  

3.4 光标问题

注意:全文复制,(读取每一行,然后copy到 f2 ),此时光标已经到文件末尾!  执行替换时,已经读取不到内容

错误代码

  1. # coding=utf-8
  2.  
  3. #打开文件
  4. f1 = open('yes.txt','r+',encoding='utf-8')
  5. f_new = open('yes2.txt','w',encoding='utf-8')
  6.  
  7. #全文复制
  8. for line in f1.readlines():
  9. print(line.strip())
  10. f_new.writelines(line)
  11.  
  12. #光标已经到末尾了
  13. a = f1.readlines() # a[]
  14.  
  15. #替换
  16. for line in f1.readlines():
  17. line = line.replace("a",'%')
  18. print(line.strip())
  19. f_new.writelines(line)

3.5 sys模块 传入参数

传入参数 sys.argv[1]

  1. import sys
  2. #打开文件
  3. with open('yes.txt','r+',encoding='utf-8') as f1:
  4. with open('yes2.txt','w',encoding='utf-8') as f_new:
  5.  
  6. find_str = sys.argv[1]
  7. replace_str = sys.argv[2]

cmd 执行代码时,可以带参数 

  1. D:\PycharmProjects\s14\作业>python "3-1 shell sed功能2.1.py" a %

  

4. 完整代码

  1. # coding=utf-8
  2.  
  3. import sys
  4. #打开文件
  5. with open('yes.txt','r+',encoding='utf-8') as f1:
  6. with open('yes2.txt','w',encoding='utf-8') as f_new:
  7.  
  8. find_str = sys.argv[1]
  9. replace_str = sys.argv[2]
  10.  
  11. #替换
  12. for line in f1.readlines():
  13. line = line.replace(find_str,replace_str).strip()
  14. print(line)
  15. f_new.writelines(line)
  16.  
  17. f1.close()
  18. f_new.close()

  

3-1 实现简单的shell sed替换功能的更多相关文章

  1. Python3学习之路~2.8 文件操作实现简单的shell sed替换功能

    程序:实现简单的shell sed替换功能 #实现简单的shell sed替换功能,保存为file_sed.py #打开命令行输入python file_sed.py 我 Alex,回车后会把文件中的 ...

  2. 4.实现简单的shell sed替换功能

    # -*- coding:utf-8 -*- # Author: JACK ZHAO # 程序1: 实现简单的shell sed替换功能 import sys #判断参数个数 if len(sys.a ...

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

    需求: 1.使python具有shell中sed替换功能. #!/usr/bin/env python #_*_conding:utf-8_*_ #sys模块用于传递参数,os模块用于与系统交互. i ...

  4. 实现简单的shell sed替换功能

    通过脚本传参数可以实现替换 # -*-coding:utf-8-*- # Author:sunhao import sys f = open('yesterday','r',encoding='utf ...

  5. python基础实现简单的shell sed 替换功能

    #coding:utf-8 from pygame.draw import lines import sys,os old_file = sys.argv[1] #接受外部设备上的参数 new_fil ...

  6. python 3.x 写 shell sed 替换功能

    shell sed 替换功能 f1 = open('yesterday','r',encoding='utf-8') f2 = open('yesterday2','w',encoding='utf- ...

  7. 实现简单sed替换功能的python脚本

    #可以用来修改配置文件参数 # -*- coding:utf-8 -*- import os,sys old = sys.argv[1] new = sys.argv[2] file = sys.ar ...

  8. sed替换 - 含反斜杠(/)和Shell变量

    sed替换 - 含反斜杠(/)和Shell变量 摘自: https://blog.csdn.net/zhenyongyuan123/article/details/6616263 2011年07月19 ...

  9. shell脚本学习(3)sed替换

    1 sed 替换   1格式: 's/原字符串/新字符串/'   输入源   2正确参考: sed ’s/as/AS/' do.txt 改变字符串as为AS,不会改输入源的文件. 匹配每行第一次匹配的 ...

随机推荐

  1. iOS设计模式 - 代理

    iOS设计模式 - 代理 原理图 说明 1. 代理模式大家都用过,但用抽象基类NSProxy实现代理估计鲜有人用 2. 本人用NSProxy实现了代理模式,对于理解消息转发机制有点帮助 源码 http ...

  2. [C++] 用Xcode来写C++程序[3] Constants

    用Xcode来写C++程序[3] Constants 以下是一些基本数据的含义: 75 // int 75u // unsigned int 75l // long 75ul // unsigned ...

  3. UNIX高级环境编程(1)File I/O

    引言: Unix系统中主要的文件操作包括: open read write lseek close unbuffered IO和standard I/O相对应,后面的章节我们会讨论这两者的区别. 在讨 ...

  4. Spring+微信小程序 卡券打通

    近期公司项目需要使用到微信卡券模块,主要做的是在小程序打通微信卡券,实现小程序领取卡券的功能效果. 简单说下涉及的东西: Springboot—使用springboot做后端接口,非常便捷 并且根本是 ...

  5. SQL语句.md

    数据库操作 create mysql> create database study_2; Query OK, 1 row affected (0.00 sec) mysql> show c ...

  6. P1710 地铁涨价

    题目背景 本题开O2优化,请注意常数 题目描述 博艾市除了有海底高铁连接中国大陆.台湾与日本,市区里也有很成熟的轨道交通系统.我们可以认为博艾地铁系统是一个无向连通图.博艾有N个地铁站,同时有M小段地 ...

  7. [USACO08NOV]Cheering up the Cow

    嘟嘟嘟 这道题删完边后是一棵树,那么一定和最小生成树有关啦. 考虑最后的生成树,无论从哪一个点出发,每一条边都会访问两次,而且在看一看样例,会发现走第w条边(u, v)的代价是L[w] * 2 + c ...

  8. Day4 MySql触发器视图索引以及设计优化

    触发器 MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 通过事件触发,不能传参 语法 CREA ...

  9. J - Relief grain HDU - 5029

    Relief grain Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 100000/100000 K (Java/Others)T ...

  10. virtualbox+vagrant学习-3-Vagrant Share-2-HTTP Sharing

    HTTP Sharing Vagrant Share可以创建一个可公开访问的URL端点来访问在Vagrant环境中运行的HTTP服务器.这被称为“HTTP共享”,在使用Vagrant Share时默认 ...