• python-全局替换程序


    练习题1-全局替换程序:

    1.写一个脚本,允许用户按以下方式执行时,即可以对指定文件内容进行全局替换
      python your_script.py old_str new_str filename
    2.替换完毕后打印替换了多少处内容

    1.txt的内容:

    马纤羽     深圳    173   13744234523
    乔亦菲     广州    173   15823423525
    罗梦竹     北京    173   18523423421
    刘诺涵     北京    173   18523423765
    岳妮妮     深圳    173   18835324553
    贺婉萱     深圳    173   18533434452
    叶梓萱     上海    173   18042432324

    代码:

     1 # @Time     :2019/6/8 20:57
     2 # -*- encoding:utf-8 -*-
     3 
     4 import os
     5 import sys
     6 
     7 my_sys = sys.argv  # 接收输入的参数
     8 if len(my_sys) != 4:
     9     print("Wrong inputing!")
    10     os._exit(0)
    11 else:
    12     print("Replacing....")
    13 old_str = str(my_sys[1])
    14 new_str = str(my_sys[2])
    15 filename = my_sys[3]
    16 new_file = filename + "_new"
    17 
    18 count = 0  # 计数
    19 with open(filename, mode='r', encoding='utf-8') as f:
    20     data = f.read()
    21     if old_str in data:
    22         data = data.split("
    ")  # 用
    分割字符串输出为列表
    23 
    24         f_new = open(new_file, mode='w', encoding='utf-8')
    25 
    26         for i in data:  # i = '马纤羽     深圳    173   13744234523'
    27             if old_str in i:
    28                 count += 1
    29             i = i.replace(old_str, new_str)
    30             f_new.write(i + "
    ")  # 写入文件
    31         f_new.close()
    32 
    33 if count > 0:
    34     if os.path.exists(filename):
    35         os.remove(filename)
    36     os.replace(new_file, filename)
    37     # os.rename("contacts_new", "contacts") #Windows没有rename函数
    38     print("替换成功,替换了{0}处".format(count))
    39 else:
    40     print("{0}文件中没有{1}".format(filename, old_str))

    执行脚本:

    修改文件内容的思路:

    以读的方式打开原文件,以写的方式打开一个新的文件,把原文件的内容读到内存中进行修改,然后写入新文件,

    最后后利用os模块的方法,把原文件删除,重命名新文件为原文件名(见代码34、35、36行)。

  • 相关阅读:
    增量学习中的自我训练
    半监督学习和直推学习的区别
    LeetCode: Word Break
    LeetCode: Linked List Cycle
    LeetCode: Reorder List
    LeetCode: Binary Tree Traversal
    LeetCode: LRU Cache
    LeetCode: Insertion Sort List
    LeetCode: Sort List
    LeetCode: Max Points on a Line
  • 原文地址:https://www.cnblogs.com/Demo-simple/p/11155052.html
Copyright © 2020-2023  润新知