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替换功能的更多相关文章

  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. [SQL Server]利用索引改善sql语句

    很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: 1.select * from table1 where name=''z ...

  2. pycharm something

    e1:使用的版本2016.3 发现无法执行py程序,执行菜单为灰色.选择py为2.7. e2:使用过jython可以运行,但是语法有问题str.formate无法执行

  3. windows下安装Mysql(图文详解)

      博客园 | 首页 | 新随笔 | 联系 | 订阅 | 管理 mysql安装过程及注意事项: 1.1. 下载: 我下载的是64位系统的zip包: 下载地址:https://dev.mysql.com ...

  4. c++与matlab联合编程,调用Deploytool 生成exe文件和dll文件(转)

    转自:http://www.cnblogs.com/xlw1219/archive/2012/12/25/2832222.html 首先必须知道联合编程需要知道的一些命令解释: mcc 的作用是将 . ...

  5. (转)ParallaxOcclusionMapping( POM ) DX9(转)

    http://blog.csdn.net/xujiezhige/article/details/7326606

  6. 低级终端IO

    低级终端IO 程序会需要对输入输出进行比简单的文件操作更为精确的控制.POSX提供了一套接口允许程序控制终端驱动程序的行为,这套接口称为通用终端接口(GIT). 需要改变终端设置的例子 标准输入输出, ...

  7. QQ邮箱验证码

    人的记忆有时候跟鱼一样,只有七秒钟,短暂的时间! .NET  Web窗体实现忘记密码,使用QQ邮箱验证修改 一.首先设置一下发送个人或企业发送的邮箱 二.登录邮箱进行设置,如图:  三.关闭邮箱 四. ...

  8. vs环境变量学习

    1. 查看vs环境变量: 在项目设置中的任何路径.目录编辑项目下,右下角有个“宏”,点开即可见所有vs环境变量的当前设置...听说还有其它地方,没看到. 2.上边的“宏”,即是英文的vs环境变量 3. ...

  9. Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;能够将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010026901/article/details/24256091 Session操作过程中的po ...

  10. Hadoop学习之路(十)HDFS API的使用

    HDFS API的高级编程 HDFS的API就两个:FileSystem 和Configuration 1.文件的上传和下载 package com.ghgj.hdfs.api; import org ...