练习题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("\n")  # 用\n分割字符串输出为列表
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 + "\n")  # 写入文件
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行)。

 

posted on 2019-07-09 06:28  嗯哈哈  阅读(650)  评论(0编辑  收藏  举报