• DAY8


    三种字符串

    1.普通字符串

    print(b'qwee')

    普通字符串u'以字节作为输出单位‘

    2.二进制字符串

    print(u'qwe')

    二进制字符串以以字节作为输出单位

    3.原义字符串:r'以字符串作为输出单位,所有普通字符串中能被转义的符号都可以被原样输出

    print(r'g:studyday8练习.py’)

    文件操作的三步骤

    1.打开文件:硬盘空间被操作系统所有,文件对象被应用程序持有

    f = open('day8.py','r',encoding='utf-8')

    2.操作文件

    data=f.read()

    3。释放文件:释放操作系统对硬盘空间的持有

    f.close()

    基础的文件读取

     f=open('day8.txt','r',encoding='utf-8')
    # data=f.read() (一次性读取所有内容)
    # print(data)
    # f.read(10)    (只读取指定字符数)
    # print(data)
    # data=f.readline()  (一次只读取一行,文件的换行标识符就是结束本次读取的依据)
    # print(data)
    # data=f.readlines()  (读取所有内容,按换行符作为读取一次的标准,存放为列表)
    # print(data)
    # f.close()

    基础的写入

    fw = open('day8','w')
    # fw.write('12435
    ')   (一次写入一条,每行必须用
    标识)
    # fw.write('443245 ')
    # fw.flush()        (将内存中的数据写入硬盘)
    # print(fw)
    # fw.write('32343 ')
    # fw.writelines(['a ','b ','v '])(一次写入多行,但是每行必须用 标识)
    # print(fw)
    # fw.close()   (
    将内存中的数据写入硬盘,释放磁盘空间

    with...open语法

    优化整合了文件资源的打开与释放
    # -- 在with的缩进内可以操作文件对象,一旦取消缩进,资源就被释放了

    # part1
    # as起别名,rf持有文件资源的变量
    with open('target.txt', 'r', encoding='utf-8') as rf:
    # 文件操作的具体代码
    # 缩进一旦取消缩进,资源就被释放了

     with open('aaa.txt','r',encoding='utf-8')as fw,open('day8.txt','r',encoding='utf-8')as fr:
    print(fw.read())
    print(fr.read())
    print(fw.read())  (报错)
    print(fr.read()) (报错)

    文件的操作模式

    主模式:r | w | a | x
    -- 主模式只能选取一个,规定着主要的操作方式
    从模式:t | b | +
    -- 从模式也必须出现,但个数不一定是一个,为主模式额外添加功能

    r: 读,必须有
    w: 清空写,可有可无
    a: 追加写,可有可无
    x:创建写,必须无

    t:默认,按字符操作
    b:按字节操作
    +:可读可写

    # rt: 文件必须提前存在,不存在报错,文件操作采用字符形式 - 简写为 r
    # wt: 文件可以存在,也可以不存在,存在则清空后写入,不存在新建后写入,文件操作采用字符形式 - 简写为 w
    # at: 文件可以存在,也可以不存在,存在在之前内容的末尾追加写入,不存在新建后写入,文件操作采用字符形式 - 简写为 a

    # rb: 文件必须提前存在,不存在报错,文件操作采用字节形式
    # wb: 文件可以存在,也可以不存在,存在则清空后写入,不存在新建后写入,文件操作采用字节形式
    # ab: 文件可以存在,也可以不存在,存在在之前内容的末尾追加写入,不存在新建后写入,文件操作采用字节形式

    # r+t:文件必须存在的可读可写,默认从头开始替换写,按字符操作
    # w+t:文件存在清空不存在创建的可读可写,按字符操作
    # a+t:文件存在追加不存在创建的可读可写,按字符操作

    # r+b:文件必须存在的可读可写,默认从头开始替换写,按字节操作
    # w+b:文件存在清空不存在创建的可读可写,按字节操作
    # a+b:文件存在追加不存在创建的可读可写,按字节操作

    文件的操作编码问题

    t模式下:原文件采用什么编码,你就选取什么编码操作,如果不选取,默认跟操作系统保持一致
    -- t模式下一定要指定编码

    b模式下:硬盘的数据就是二进制,且能根据内容识别出编码,写入时的数据也是通过某种编码提前处理好的,所有在操作时,没有必要再去规定编码

    文件的复制

    文本文件的复制:可以t也可以b

    with open('day8.txt','r',encoding='utf-8') as rf:
    with open('aaa.txt','w',encoding='utf-8') as wf:
    for line in rf:
    wf.write(line)
    print(wf)
    with open('day8.txt','rb',encoding='utf-8')as wf:
    with open('aaa.txt','wb',encoding='utf-8')as wf:
    for line in wf:
    wf.write(line)
    print(wf)

    非文本文件只能采用b模式操作,不需要指定编码 - 因为根本不涉及编码解码过程

    with open('001.mp4', 'rb') as rf:
    with open('002.mp4', 'wb') as wf:
    for line in rf:
    wf.write(line)

    游标操作

    1.游标操作的是字节,所有只能在b模式下进行操作
    # 2.游标操作可以改变操作位置,r模式下可以改变位置进行操作,所有主模式选择r模式
    # 3.seek(offset, whence):
    # -- offset为整数就是往后偏移多少个字节,负数就是往前偏移多少个字节
    # -- whence:0代表将游标置为开头,1代表从当前位置,2代表将游标置为末尾

    爱我中华

    with open('target.txt', 'rb') as f:
    # 先读6个字节
    data = f.read(6)
    print(data.decode('utf-8')) 
    爱我
    f.seek(3, 0)
    data = f.read(6)
    print(data.decode('utf-8')) (将游标从头开始往后偏移3个字节)
    我中
    f.seek(-3, 1)
    data = f.read(3)
    print(data.decode('utf-8')) # (从当前游标位置往前偏移3个字节)

    f.seek(-3, 2)      (从末尾往前偏移3个字节)
    data = f.read(3)
    print(data.decode('utf-8'))

  • 相关阅读:
    阿里P8架构师谈:阿里双11秒杀系统如何设计?
    秒杀系统设计的知识点
    秒杀系统架构优化思路
    秒杀系统解决方案
    Entity Framework Code First (七)空间数据类型 Spatial Data Types
    Entity Framework Code First (六)存储过程
    Entity Framework Code First (五)Fluent API
    Entity Framework Code First (四)Fluent API
    Entity Framework Code First (三)Data Annotations
    Entity Framework Code First (二)Custom Conventions
  • 原文地址:https://www.cnblogs.com/duGD/p/10753386.html
Copyright © 2020-2023  润新知