day13_文件操作

复制代码
import time

# with open('access.log', mode='rt',encoding="utf-8") as f:
#     # 1、将指针跳到文件末尾
#     # f.read() # 错误
#     f.seek(0, 2)
#
#     while True:
#         line = f.readline()  # 读一行
#         if len(line) == 0:
#             time.sleep(0.3)
#         else:
#             print(line, end='')


with open('access.log', mode='rb') as f:
    # 1、将指针跳到文件末尾
    # f.read() # 错误
    f.seek(0, 2)

    while True:
        line = f.readline() + b'\n'  # 读一行
        if line == b'\n':
            time.sleep(0.3)
        else:
            print(line.decode('utf-8'), end='')
复制代码

文件修改的两种方式

复制代码
# 方式一:文本编辑采用的就是这种方式
# 实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
# 优点: 在文件修改过程中同一份数据只有一份
# 缺点: 会过多地占用内存
# with open('c.txt',mode='rt',encoding='utf-8') as f:
#     res=f.read()
#     data=res.replace('alex','dsb')
#     print(data)
#
# with open('c.txt',mode='wt',encoding='utf-8') as f1:
#     f1.write(data)


# 方式二:
import os
# 实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名
# 优点: 不会占用过多的内存
# 缺点: 在文件修改过程中同一份数据存了两份
with open('c.txt', mode='rt', encoding='utf-8') as f, \
        open('.c.txt.swap', mode='wt', encoding='utf-8') as f1:
    for line in f:
        f1.write(line.replace('alex', 'dsb'))

os.remove('c.txt')
os.rename('.c.txt.swap', 'c.txt')
复制代码

 

# 三、函数返回值
# return是函数结束的标志,即函数体代码一旦运行到return会立刻
# 终止函数的运行,并且会将 return 后的值当做本次运行的结果返回:
# 1、返回None:函数体内没有return
# return
# return None
#
# 2、返回一个值:return 值
# def func():
# return 10
#
# res=func()
# print(res)

posted @   walkerpython  阅读(30)  评论(0)    收藏  举报
编辑推荐:
· 字符集、编码的前世今生
· Web性能优化:从 2 秒到200毫秒
· WPF 使用GDI+提取图片主色调并生成Mica材质特效背景
· golang遍历处理map时的常见性能陷阱
· .NET8带来的一些新特性
阅读排行:
· Web性能优化:从 2 秒到200毫秒
· 看到这种代码,我直接气到想打人
· Winform高级技巧-界面和代码分离的实践案例
· 1 分钟生成架构图?程序员 AI 绘图保姆级教程
· 字符集、编码的前世今生
点击右上角即可分享
微信分享提示