• Python Day08


    三种字符串:
    
    ```PYTHON
    普通字符串:u"以字符作为输出单位"print(u"abc")
    二进制:b"二进制字符串以字节为单位输出"print(b"abc")
    原义字符串r"以字符为单位输出,能被转义的字符原样输出"print(r"a
    b
    ")
    ```
    
    文件操作三步骤:
    
    ```python 
    1:打开文件:硬盘空间被操作系统持有,文件对象被应用程序持有
        f_o=open("当前地址下具体文件名""操作方式",encoding="utf-8")
    2:操作文件:data=f.read()
    3:释放文件:释放操作系统对硬盘空间的持有f.close
    
    
    ```
    
    基础读、写:
    
    ```python
    fr=open("source.txt","r",encoding="utf-8")
    fr.read():将所有内容一次性读完
    fr.read(10):指定读的字符数
    fr.readline():一次读一行:文件换行符就是结束本次读取的依据,存为字符串类型
    fr.readlines():将所有内容读存,按换行标识作为读取一次的依据,存为列表。存为列表。存为列表。
    fr.close
    fw=open("target.txt","w",encoding="utf-8")
    fw.write("123
    "):一次写一行,行必须用
    标识
    fw.writelines(["abc
    ","def
    ","xyz
    "]):一次写多行,必须用
    进行标识
    fw.flush():向操作系统发送一条将内存中数据刷新到硬盘指令
    fw.close():将内存中写的数据刷新到硬盘 然后  释放硬盘空间
     
    ```
    
    with...open 语法
    
    ```PYTHON
    withopen语句整合了文件资源打开与释放
       在with的缩进内可以操作文件对象,一旦取消缩进,资源就被释放了。
    语法结构:
      withopen("target.txt","r",encoding="utf-8")as fr,
          
    
    ```
    
    文件的操作模式:
    
    ```python
    主模式:r、w、a、x:主模式只能选取一个,规定主要操作模式
    从模式:t、b、+:从模式也必须出现,但个数不一定唯一,为主    模式添加功能。t、b两种只能有一个。从模式的组合只能是
        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:文件存在追加不存在创建的可读可写,按字节操作
    ```
    
    
    
    文件操作编码问题:
    
    ```PYTHON
    t模式下,原文采用什么编码,就选用什么编码,如果不选取,就跟操作系统一致。
    b模式下,硬盘数据就是二进制文件,读出、写入都是二进制,不需要编码,没有必要再规定编码。
    
    ```
    
    文件复制:
    
    ```python
    with open('target.txt', 'r', encoding='utf-8') as rf:
        with open('target2.txt', 'w', encoding='utf-8')     as wf:
            for line in rf:
                wf.write(line)
    with open('target.txt', 'rb') as rf:
        with open('target3.txt', 'wb') as wf:
            for line in rf:
                wf.write(line)
    非文本文件只能采用b模式操作,不需要指定编码 - 因为根本不涉及编码解码过程
    with open('001.mp4', 'rb') as rf:
        with open('002.mp4', 'wb') as wf:
            for line in rf:
                wf.write(line)
    ```
    
    游标操作:
    
    ```python
    1.游标操作的只能是字节,所以只能在b模式下进行操作
    2.游标操作可以改变操作位置,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'))  # 你是
        # 将游标从头开始往后偏移3个字节
        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'))  #
    
        f.seek(-3, 2)
        data = f.read(3)
        print(data.decode('utf-8'))  #
            
    ```
  • 相关阅读:
    如何透过上层div点击下层的元素解决方法
    学习javscript函数笔记(二)
    js栈内存和堆内存的区别
    学习javscript对象笔记(一)
    小程序 给最外层view设置百分之百高度不起作用
    小程序 开发阶段请求网络报 不在以下 request 合法域名列表中
    git安装以及webstorm配置git
    failed to push some refs to 'git@github.com:xxx/xxx.git' 解决方法
    Jquery EasyUI Treegrid按需加载子集
    js时间戳与日期格式的相互转换
  • 原文地址:https://www.cnblogs.com/huhongpeng/p/10754308.html
Copyright © 2020-2023  润新知