zoukankan      html  css  js  c++  java
  • 文件操作

    文件的操作

    w = open('1.txt', 'w', encoding='utf--8')
    w.write('000
    ')
    #在写入大量数据,要及时处理内存空间,不然内存可能溢出导致数据丢失
    #flush:1.将内存中的数据刷新到硬盘中;2.释放文件资源
    w.flush()
    w.write('111
    ')
    # 最后一次flush()操作可省略
    w.flush()
    
    # 一次输入多行
    w.writelines(['asd
    ', 'aeqwead
    '])
    
    w.close()
    
    with open('文件', '模式', encoding='utf-8') as f:
        # 操作
        pass
    
    newlines   # 读取一个字节,如果是行/文件等结束标识,就返回值,否则返回None

    文件的操作模式

    '''
        r : 读
        w : 写(无创建,有清空)
        a : 追加(有创建功能)
    
        t : 文本操作(默认模式)
        b : 非文本文件必须采用二进制模式
        + :可读可写
    
        r+ : 不创建文件的可读可写  | w+:创建清空文件的可读可写   |   a+"创建不清空文件(追加)的可读可写
        rb : 二进制读 | wb 创建清空文件的二进制写  | ab :创建不清空文件(追加)的二进制写
        rb+   |    wb+  |     ab+
    
        x :创建文件,如果文件已存在就抛异常
        U :已被抛弃不用
    
    '''
    
    # with open 语法进行文件复制(边读边写赋值)
    # 复制文本类文件
    with open('source.txt', 'rt', encoding='utf-8') as f1:
        with open('target.txt', 'a+', encoding='utf-8') as f2:
            for line in f1:
                f2.write(line)
                
                
    # 复制非文本类型的数据文件
    # 从模式采用b模式
    with open(r'source.mps','rb') as f1,
        open(r'target.mp4','wb+') as f2:  # rb+/wb/wb+/ab/ab+
        for line in f1:
            f2.write(line)

    文件游标操作

    # 游标  必须在b模式下操作,seek中偏移的是字节
    '''
    1.如何使用游标:游标的相关方法
    2.游标相关的读写操作
    3.根据游标在大文件中取出多个指定位置的部分字节内容
    '''
    
    # 游标读:
    # 方法: seek(偏移量,偏移位置)
    # 偏移量:移动的字节数
    # 偏移位置:0 - 从文件开始位置开始偏移 | 1 - 从当前游标位置开始偏移  | 2 - 从文件末尾开始偏移
    with open('source.txt','rt',encoding='utf-8') as f:
        d1 = f.read()
        print(d1)
    
        #打印游标当前位置
        print(f.tell())
    
        # 游标操作:从头开始
        f.seek(0,0)
        d2 = f.read()
        print(d2)
    
        # 游标操作:从当前位置开始
        f.seek(3,1)
        d3 = f.read()
        print(d3)
    
        # 游标操作:从末尾开始
        f.seek(-5,2)
        d4 = f.read()
        print(d4)
    
    
    # 游标写:(会覆盖书写)
    with open('source.txt','rb+') as f:
        f.seek(11)
        f.write(b'0000')   # 写入的内容必须是b字符串,会覆盖后面的内容
    
    # 文件秒传
    # 在大文件中,开头 | 1/3 | 2/3 | 末尾 各取10个字节拼接成秒传的信息依据
    tagdata = b''
    with open(r'001.png', 'rb') as f:
        data = f.read()
        length = len(data)
        # 开头
        f.seek(10, 0)
        d1 = f.read(10)
        # 1/3
        f.seek(length // 3, 0)
        d2 = f.read(10)
        # 2/3
        f.seek(length // 2 * 3,0)
        d3 = f.read(10)
        # 末尾
        f.seek(-10,2)
        d4 =f.read(10)
    tagdata = d1+d2+d3+d4
    
    newdata = b''
    with open(r'002.png','rb') as f:
        data = f.read()
        length = len(data)
        f.seek(0,0)
        newdata += f.read(10)
        f.seek(length//3,0)
        newdata += f.read(10)
        f.seek(length//3*2)
        newdata += f.read(10)
        f.seek(-10,2)
        newdata +=f.read(10)
    
    if newdata == tagdata:
        print('秒传成功')
    else:
        print('慢慢传去吧!')
  • 相关阅读:
    Chromium 和Webkit 3月14日的最近进展:多标签选择、标签标题省略、动画API和新的Chromium Logo
    奇妙的HTML5 Canvas动画实例
    XNA那些事(一) 框架工作原理
    实现跨浏览器的HTML5占位符
    编写超级可读代码的15个最佳实践
    谈HTML5和CSS3的国际化支持
    HTML5 Guitar Tab Player
    如何设置让网站禁止被爬虫收录?robots.txt
    YourPHP笔记
    Robots.txt  禁止爬虫
  • 原文地址:https://www.cnblogs.com/penghengshan/p/10607481.html
Copyright © 2011-2022 走看看