python

Python的第十二天

一、混合模式操作文件

 1、w+ :写读,创建一个新文件,把写的内容读出来 

 2、r+ :读写,能读能写,写在文件的最后

 3、a+ :追加读

 问题:SyntaxError: positional argument follows keyword argument :参数位置不对

        f = open("人物联系方式",encoding='utf-8','r+')

 解决:

         f = open("人物联系方式","r+",encoding='utf-8')

r+的例子:
f = open("人物联系方式","r+",encoding='utf-8')
print(f.readline())
print(f.tell())
f.seek(f.tell())------在指定光标处写
f.write("又新来了一个人物。。")
-------
1、马先宇  深圳 173  50  13789023890
又新来了一个人物。。 17809654890
3、罗梦竹 北京 175 49 13478096709
4、刘诺涵 北京 170 48 13465098907
5、叶梓萱 上海 171 49 15798643098又新来了一个人物。。

二、文件修改

1、不覆盖,而是往后挤---打开文件,把内容都存到内存里
f = open("人物联系方式","r+",encoding="utf-8")
#1、把新数据加到内存
data = f.read()
new_date = data.replace("罗梦竹","欧阳娜娜")
#2、清空文件
f.seek(0)-------找到光标,将其定位在0
f.truncate()-------截断文件,假如参数是100,100之后的全部清空
#3、把新内容写回硬盘
f.write(new_data)
f.close()

3、罗梦竹,北京 175 49 13478096709
3、欧阳娜娜,北京 175  49  13478096709

三、练习--开发全局文本检索替换脚本

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

调用外部参数:
 import sys
print(sys.argv) #调用外部参数

   (pythonProject4) C:\Users\86181\PycharmProjects\pythonProject4>python hello.py argv1 argv2 argv3
 ['hello.py', 'argv1', 'argv2', 'argv3']

 

 

import sys
print(sys.argv) #调用外部参数
old_str = sys.argv[1]
new_str = sys.argv[2]
filename = sys.argv[3]
#1、将文件读到内存里
f = open("filename","r+")
data = f.read()
#2、count 和 replace
old_str_count = data.count(old_str)
new_data = data.replace(old_str,new_str)
#3、清空文件
f.seek(0)
f.truncate()
#4、将新数据写到文件里
f.write(new_data)
f.close()
print(f"成功地将字符'{old_str}'替换成'{new_str}',共{old_str_count}处")


 


 

 

posted @ 2021-02-03 20:40  阳光帅气  阅读(48)  评论(0编辑  收藏  举报