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()
    

      

  • 相关阅读:
    vue五十:Vue美团项目之商家详情-查看商品详情
    vue四十九:Vue美团项目之商家详情-tabbar状态切换和导航返回
    vue四十八:Vue美团项目之商家详情-左右联动之商品分类跟随商品列表滚动
    vue四十七:Vue美团项目之商家详情-左右联动之选中商品分类跳转到对应商品列表
    vue四十六:Vue美团项目之商家详情-商品滚动完成
    vue四十五:Vue美团项目之商家详情-商品分类滚动完成
    vue四十四:Vue美团项目之商家详情-导航栏和header布局
    vue四十三:Vue美团项目之首页-tabbar搭建
    vue四十二:Vue美团项目之首页-商家列表
    Ugly Number
  • 原文地址:https://www.cnblogs.com/venicid/p/7246112.html
Copyright © 2011-2022 走看看