博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python-全局替换程序
阅读量:5012 次
发布时间:2019-06-12

本文共 1628 字,大约阅读时间需要 5 分钟。

练习题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 += 129             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行)。

 

转载于:https://www.cnblogs.com/Demo-simple/p/11155052.html

你可能感兴趣的文章
Cookie&Session会话跟踪技术
查看>>
UNIX环境高级编程 第17章 高级进程间通信
查看>>
ES的Zen发现机制
查看>>
【hibernate】1、Hibernate的一个注解 @Transient
查看>>
HihoCoder 1877 - Approximate Matching
查看>>
Elastic Search 语法总结
查看>>
py自动化之环境配置
查看>>
Winodws SNMP服务安装和配置(Windows 2003 & 2008 R2)
查看>>
红黑树-想说爱你不容易
查看>>
【题目】英文字符进行频率的统计,直方图输出
查看>>
LeetCode-Binary Tree Level Order Traversal
查看>>
COM组件开发实践
查看>>
yii2 源码分析1从入口开始
查看>>
浅谈网站推广
查看>>
Away3D基础之摄像机
查看>>
Leetcode 128. Longest Consecutive Sequence
查看>>
程序员必须知道的几个Git代码托管平台
查看>>
导电塑料入梦来
查看>>
C# 线程手册 第五章 扩展多线程应用程序 - 什么是线程池
查看>>
笔记1126ASP.NET面试题(转)
查看>>