zoukankan      html  css  js  c++  java
  • 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:PycharmProjectss14作业>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()
    

      

  • 相关阅读:
    如何缓解考前紧张和焦虑
    **浅谈差分【复习】**
    杂题训练之十一
    浅谈dfs/Tarjan找环【复习】
    杂题训练之十一
    杂题训练之十
    动态规划训练之二十
    浅谈欧拉函数【复习】
    数论训练之五
    浅谈杨辉三角【复习】
  • 原文地址:https://www.cnblogs.com/venicid/p/7246112.html
Copyright © 2011-2022 走看看