python练习案例02之文件小工具

203 阅读2分钟

这是我参与8月更文挑战的第2天,活动详情查看:8月更文挑战

1.文件修改功能:

 编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改
 def alter_file(path,src_data,update_data):
     with open(path,mode='rt',encoding='utf-8') as f:
         res = f.read()
         res = res.replace(src_data,update_data)
     with open(path,mode='wt',encoding='utf-8') as f:
         f.write(res)
     print('修改完成!!!')

源文件内容:

1.txt

 就在耀的剑意到达巅峰之后不久,旅途也来到了云中漠地。很少有人知道,生活在长安的耀,出生于云中漠地的海市蜃楼之下。他怀着剑仙荣耀归来,却发现幼年记忆里充满异域风情的繁华城池已经不复存在。被贩为奴隶的公主,向他倾诉自己的遭遇:帝国的铁骑越过长城,踏平了整个云中漠地。荒废的城池很快被黄沙掩埋。耀想要救出她,少女却选择了从屈辱中自我了断。

1.首先我们要设置一下参数变量,分别是path,src_data,update_data这三个,我们先把这三个变量写死,最后再封装成函数

 path = r'E:\Download\1.txt'
 src_data = '耀'
 update_data = '李白'

2.现在就是用读的方式打开文件,把文件内容读出来,然后用update_data 去替换一下src_dat

 with open(path,mode='rt',encoding='utf-8') as f:
     res = f.read()
     res = res.replace(src_data,update_data)

3.最后再用写的方式打开这个文件写进去

 with open(path,mode='wt',encoding='utf-8') as f:
     f.write(res)
 print('修改完成!!!')

4.最终封装成一个函数,把变量改成参数

 def alter_file(path,src_data,update_data):
     with open(path,mode='rt',encoding='utf-8') as f:
         res = f.read()
         res = res.replace(src_data,update_data)
     with open(path,mode='wt',encoding='utf-8') as f:
         f.write(res)
     print('修改完成!!!')

2.编写tail工具

 def tail_tool(path):
     import time
     with open(path,mode='rb') as f:
         f.seek(0,2)
         while True:
             res = f.readline()
             if len(res) == 0:
                 time.sleep(0.5)
             else:
                 res = res.decode('utf-8')
                 print(res)

1.这个就是对一个文件的尾行进行实时监测的,我们还是先设置一下参数变量,这里是path文件的路径,然后导入时间模块

 path = r'E:\Download\1.txt'
 import time

2.然后用读二进制的方式打开,并把指针放到最后一行

 with open(path,mode='rb') as f:
     f.seek(0,2)

3.然后开始实时监测,就是写一个死循环,每次都读最后一行,如果最后一行长度为0,就说明没有添加内容,就休息一点时间,然后继续读,如果长度不为0,说明有内容添加,就把内容编码成utf-8然后打印出来

 while True:
     res = f.readline()
     if len(res) == 0:
         time.sleep(0.5)
     else:
         res = res.decode('utf-8')
         print(res)

4.最后封装成一个函数即可

 def tail_tool(path):
     import time
     with open(path,mode='rb') as f:
         f.seek(0,2)
         while True:
             res = f.readline()
             if len(res) == 0:
                 time.sleep(0.5)
             else:
                 res = res.decode('utf-8')
                 print(res)

\