zoukankan      html  css  js  c++  java
  • python入门作业——文件管理b模式的应用

    1、通用文件copy工具实现

    old_file=input('要复制的文件路径>>: ').strip()
    new_file=input('复制到文件路径>>: ').strip()
    with open(r'{}'.format(old_file),mode='rb') as f1,
        open(r'{}'.format(new_file),mode='wb') as f2:
    #     res=f1.read() # 该方法可能会导致内存占用过大
    #     f2.write(res)
        for line in f1:
            f2.write(line)

    2、基于seek控制指针移动,测试r+、w+、a+模式下的读写内容

      r+

    with open('aaa.txt',mode='wt',encoding='utf-8') as f:   # 创建一个文文件
        f.write('123abc你好')
    with open('aaa.txt',mode='r+b') as f:
        f.seek(3,0)  # 0从头开始 指针往前移动3格
        print(f.tell())  # 指针在3位置
        # print(f.read())  # abc你好
        f.seek(3,1)  # 从3开始往前移动3格
        print(f.tell())  # 指针在6位置
        # print(f.read().decode('utf-8'))  # 你好
        f.seek(-3,2)  # 指针从末位开始往前三个位置
        print(f.tell())  # 指针在9位置  汉字一个3字节
        print(f.read().decode('utf-8'))  #

      w+

    with open('aaa.txt',mode='w+b') as f:
        f.write('123abc你好'.encode('utf-8'))  # 输入完内容指针在最后
        f.seek(3,0) # 0从头开始 指针往前移动三格
        print(f.tell())  # 指针在3位置
        # print(f.read())  # b'abcxe4xbdxa0xe5xa5xbd'
        # print(f.read().decode('utf-8')) # abc你好  上下两个print只能取一个  因为一个读完指针就到了最后 下面的print就读不出东西了
        f.seek(3,1)  # 从3开始往前移动3格
        print(f.tell())  # 指针在6位置
        # print(f.read().decode('utf-8'))  # 你好
        f.seek(-3,2)   # 指针从末位开始往前三个位置
        print(f.tell())  # 指针在9位置  汉字一个3字节
        print(f.read().decode('utf-8'))  #

      a+

    with open('aaa.txt',mode='a+b') as f:
        f.seek(3,0) # 0从头开始 指针往前移动三格
        print(f.tell())  # 指针在3位置
        # print(f.read())  # b'abcxe4xbdxa0xe5xa5xbd'
        # print(f.read().decode('utf-8')) # abc你好  上下两个print只能取一个  因为一个读完指针就到了最后 下面的print就读不出东西了
        f.seek(3,1)  # 从3开始往前移动3格
        print(f.tell())  # 指针在6位置
        # print(f.read().decode('utf-8'))  # 你好
        f.seek(-3,2)   # 指针从末位开始往前三个位置
        print(f.tell())  # 指针在9位置  汉字一个3字节
        print(f.read().decode('utf-8'))  #

    3、tail -f access.log程序实现

    import time
    with open('access.log',mode='wb') as f:
        f.write('123abc你好') # 创建一个文件并输入点内容
    with open('access.log',mode='rb') as f:
        f.seek(0,2)
        while True:
            line=f.readline()
            if len(line) == 0: #如果没有内容那就延迟五秒后再运行while循环
                # 没有内容
                time.sleep(5) #延迟五秒
            else:
                print(line.decode('utf-8'),end='') #输出指针后面的内容
  • 相关阅读:
    数据量过大时数据库操作的处理
    VC中回调函数的用法
    基于BindingSource的WinForm开发
    VC获取各类指针
    GetSystemMetrics()函数的用法
    samba建立个人专享网盘
    Windows 7下用Windows照片查看器打开图片速度变慢的解决方案
    这是一个模板
    QT中编译和使用OPENCV
    MFC日志(2011.4.9)
  • 原文地址:https://www.cnblogs.com/liuxinging/p/12506376.html
Copyright © 2011-2022 走看看