美文网首页ProMonkey Lab
Python基础之文件处理(二)

Python基础之文件处理(二)

作者: ProMonkey_LAIN | 来源:发表于2018-07-16 10:50 被阅读0次

    Python基础文件处理

    python系列文档都是基于python3

    一、字符编码
    1. 在python2默认编码是ASCII, python3里默认是utf-8;

    2. unicode分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-8就是unicode;

    3. 在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string;

    4. 内存固定使用Unicode编码,硬盘的编码可以修改(即可以修改的软件编码);

    5. 使用什么编码往硬盘存,就用什么编码去读;

    6. 程序运行分两个阶段:
        - 从硬盘读到内存
        - python解释器运行读到内存里的代码

    7. 针对.py文件,python与nodpad++\vim的区别是多了运行已经读到内存里的代码.

    二、文件处理
    • open函数操作
      • 第一个参数:文件名路径和名称
      • 第二个参数:mode,文件打开的方式
    f = open('filename', 'mode')
    f.close()
    
    • 模式
    模式 操作 说明
    r 只读(read-only) 默认模式,以只读方式打开文件,如果文件不存在就报错,存在就正常读取
    w 写(write) 如果文件不存在,新建文件然后写入;如果存在,先清空文件内容,再写入
    a 追加(append) 如果文件不存在,新建文件然后写入;如果存在,在文件的最后追加写入
    x 创建 如果文件存在则报错,如果不存在就新建文件,然后写入内容,比w模式更安全
    b 二进制方式 binary方式,二进制写入;比如rb、wb、ab,以bytes类型操作数据
    + 读写 可读又可写双模式;比如r+、w+、a+
    #r,读模式,open命令默认是读模式
    f = open('testfile','r',encoding='utf-8')
    print(f.read())
    
    #w,写模式,如果没有文件会创建
    f = open('testfile','w',encoding='utf-8')
    f.write('人生苦短,我学python\n')
    f.close()
    
    #a,追加模式
    f = open('testfile','a',encoding='utf-8')
    f.write('keep keep !\n')
    f.close()
    
    #r+,读写 可读,追加内容到最后
    f = open('testfile','r+',encoding='utf-8')
    f.readline()
    f.write('devops\n')
    
    #w+,写读  新建文件,写入再读取
    f = open('testfile','w+',encoding='utf-8')
    f.readline()
    f.write('devops2\n')
    
    # a+,追加读 清空源文件,再添加,然后读取
    f = open('testfile','w+',encoding='utf-8')
    f.readline()
    f.write('devops3\n')
    
    #删除,打开一个文件写入空即删除
    f = open('testfile','r+',encoding='utf-8')
    f.readline()
    f.write('')
    
    • 文件处理方法
    f = open('testfile','w+',encoding='utf-8')
    f.close()
    f.closed    #判断操作的文件是否关闭
    f.encoding  #打印文件的编码格式
    f.fileno()  #返回操作系统接口文件索引<网络编程,I/O复用>
    f.flush()   #刷新操作
    f.isatty()  #判断打开的文件是否是终端文件
    f.name      #打印文件名
    f.newlines  #未读取到行分隔符时为 None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束符的列表
    f.readable()    #同isatty类似
    f.seek()    #移动光标,到固定位置返回此位置以后的内容(按照字符移)
    f.tell()    #打印光标所在位置的索引
    f.truncate()    #截断,配合seek,括号内指定保留字符数量,从头开始切
    f.writelines()  #写列表到文件
    
    • with语句
      • with语句是一种上下文管理协议技术(ContextManagemenProtocal)
      • 自动判断文件的作用域,自动关闭已打开且不在使用的文件句柄
      #readline函数,一行一行读取
      with open(r'test.txt','r',encoding='utf-8') as f:
        strline = f.readline()
        while strline:
            print(strline)
            strline = f.readline()
      
      with open(r'test.txt','r',encoding='utf-8') as f:
        #以打开的文件f作为参数,创建列表
        l = list(f)
        #打印出列表内容
        for i in l:
            print(i)
      
      #read函数,是按照字符读取文件内容;默认读取所有
      with open('test.txt', 'r', encoding='utf-8') as f:
        strchar = f.read()
        print(strchar)
      

    相关文章

      网友评论

        本文标题:Python基础之文件处理(二)

        本文链接:https://www.haomeiwen.com/subject/zusrpftx.html