• day08


    字符串转ASCII表的十进制

    ASCII表中十进制对应的 字符

    print( c + " 的ASCII 码为", ord(c))
    print( a , " 对应的字符为", chr(a))

    三种字符串形式

    a'' 普通字符串:以字符作为输出单位

    b'' 二进制字符串:以二进制字符串字符串以自己作为输出单位

    r''  愿意字符串: 所有字符串中的转义符号都能原样输出(取消转义)

    文件操作的三步骤

    打开文件 硬盘空间被操作系统持有 文件被应用程序持有

    操作文件 .write .read

    释放文件  .close

    具体操作

    r  读

    f=open('文件路径‘ ,’r' ,encodint='utf-8')    打开文件 让文件被f持有  用 utf-8编码表 读取文件里面的字符串

    f.read()一次性读完 文件里面的所有内容

    f.read(10)   读取指定字符数

    f.readline   一次读一行根据换行标识

    f.readlines   将所有内容按照换行标识全部读取出来

    f.close     将内存上的数据 释放给 硬盘存储起来

    w 写

    wf=open('文件路径‘ ,’w' ,encodint='utf-8')    打开文件 让文件被wf持有  用 utf-8编码表  对文件进行写入字符串操作

    wf.write('asd' ) 一次写一行 

    wf.flush 在写入过程中字符串是被内存存着的 文件并不能把 写入的文件显示给用户 当执行.flush 上面写入的字符串就能被

    存入文件保存在硬盘 显示给用户看

    wf.writelines 一次写多行 但是不需要 标识

    with open 

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

    with open ('文件路径‘ ,’r' ,encoding=('utf-8')  as rf  ,with open ('文件路径‘ ,’r' ,encoding=('utf-8')  as rf1,    打开文件让 文件被rf持有 用编码表utf-8 进行读取

                  rf.read()

                  rf1.read()   

    取消缩进res.read() 内存中 资源被释放  文件关闭 读取不了了

    with open('target.txt', 'r', encoding='utf-8') as rf1:
          with open('target1.txt', 'r', encoding='utf-8') as rf2:
              print(rf1.read())
              print(rf2.read())
          print(rf1.read())  # 可以操作             
         print(rf2.read())  # 不可以操作

    文件操作模式

    主模式  r  w  a  x

      主模式只能选取一个 规定只要操作方式

    从模式  t  b  + 

     从模式也必须出现一个 上面介绍基础读写的过程中 r w 默认从模式为t 所以不显示  

    从模式是为主模式添加功能能

    rt模式   读文件内容 必须要要有文件存在 不然报错 文件操作以字符串形式

    rb模式   文件操作以字节形式                                                            

    wt模式    写入内容  没有文件 新建文件 有文件清空文件内容写入  文件操作以字符串形式

    wb模式    文件操作以字节形式    

    at模式  追加写 没有文件新建文件 写入  文件中有内容 追加内容在末尾  文件操作以字符串形式

    ab模式   文件操作以字节形式    

    r+t模式     可读可写文件必须存在 且可以可写 以字符串形式操作 默认从开头开始替换写入

    r+b模式   可读可写字节操作

    w+t        可读可写文件不存在新建  文件存在清空内容 写入 字符操作

    w+b       可读可写 字节操作

    a+t        可读可写 文件不存在新增 文件存在文件内容后面新增字符操作

    a+b       可读可写  字节操作

    文件编码问题

    t模式下  原文件采用什么编码  读取该文件也需要用相同的编码  如果不选默认跟操作系统保持一致

    b模式下  因为原文件内从是二进制的数据 存在硬盘中  原文件内容存入硬盘已经有一个文件通过编码表转化成二进制数据类型的一个过程

                 我们用字符形式 来读原文件  可以直接读到原文件在硬盘中的二进制数据 我们不需要在规定一个编码

    文件复制过程

    # 文本文件的复制字符串复制:可以t也可以b
    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)

    游标操作

    游标操作的是字节 所以只能在b模式下进行操作

    .seek(offse,whence)

    offse  代表游标向右偏移的字节数 -offse 代表向左偏移

    whence 0 代表游标设置问开头  1代表游标在当前位置 2 代表游标在末尾

  • 相关阅读:
    什么叫线程安全?servlet 是线程安全吗?
    SynchronizedMap 和 ConcurrentHashMap 有什么区别?
    CopyOnWriteArrayList 可以用于什么应用场景?
    乐观锁和悲观锁的理解及如何实现,有哪些实现方式?
    当一个线程进入某个对象的一个 synchronized 的实例方 法后,其它线程是否可进入此对象的其它方法?
    一个线程运行时发生异常会怎样?
    用 Java 实现阻塞队列 ?
    在 java 中 wait 和 sleep 方法的不同?
    为什么代码会重排序?
    volatile 有什么用?能否用一句话说明下 volatile 的应用场景?
  • 原文地址:https://www.cnblogs.com/huikejie/p/10752971.html
Copyright © 2020-2023  润新知