zoukankan      html  css  js  c++  java
  • python入门:文件

    python文件处理

    1. 文件操作分为读、写、修改

    1.1 文件的读

    示例1:

    f = open(file='user_list', mode='r', encoding='utf-8')
    data = f.read()
    f.close()
    print(data)
    
    • file='user_list'         #表示文件路径
    • mode=‘r’                # 表示只读
    • encoding=‘utf-8’    #表示硬盘上的0101010 按照utf-8的规则去“断句”,再将“断句”后的每一段0101010转换成Unicode的01010101,Unicode对照表中有01010101和字符的对应关系
    • f.read() 表示读取所有内容,内容是已经转换完毕的字符串
    • f.close()  表示关闭文件

    示例2:

    f = open(file='user_list', mode='rb')
    data = f.read()
    f.close()
    print(data)
    

      

    • file='user_list'         #表示文件路径
    • mode=‘rb’                # 表示只读
    • f.read() 表示读取所有内容,内容是硬盘上原来以某种编码保存的010101010,即:某种编码格式的字节类型
    • f.close()  表示关闭文件

     

    示例2和示例1的区别在哪?

        在于示例2打开文件时并未指定encoding,只是为啥?是因为直接以rb模式打开了文件,rb是指二进制模式,数据读到内存里直接是bytes格式,如果想看内容,还需要手动decode,因此在文件打开阶段,不需要指定编码

    问:假如不知道要处理的文件是什么编码怎么办呢?

    import chardet
    f = open(file='user_list', mode='rb')
    data = f.read()
    f.close()
    
    result = chardet.detect(open('user_list', mode='rb').read())
    
    print(result)
    

      

    循环文件

     1.2  写文件

    f = open(file='user_list1', mode='w', encoding='utf-8')
    f.write('lala Du,26,13898424612,Operation,2017-07-02')
    f.close()
    

      上述操作语法解释:

    • file='user_list1'       # 表示文件路径
    • mode = ‘w’                               # 表示只写
    • encoding=‘utf-8’                      # 将要写入的Unicode字符串编码成utf-8格式
    • f.write(....)                                       # 表示写入内容,写入的内容是Unicode字符串类型,内部会根据encoding转换为指定编码的01101010101,即:字节类型

    二进制模式写:wb

    1.3 追加

    把内容追加到文件尾部

    f = open(file='user_list1', mode='a', encoding='gbk')
    f.write('
    Tom,28,13898424613,Operation,2017-07-02')
    f.close()
    

      

    注意:

    • 文件操作时,以“a”或“ab”模式打开,则只能追加,即:在原来内容的尾部追加内容
    • 写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:

                    ab,写入时需要直接传入以某种编码的0100101,即:字节类型

                     a和 encoding,写入时需要传入Unicode字符串,内部会根据encoding指定的编码将Unicode字符串转换为编码的010101010

    1.4  读写混合模式

    f = open(file='user_list1', mode='r+', encoding='gbk')
    data = f.read()     # 可以读内容
    print(data)
    f.write('
    Jacke,30,13898424616,Operation,2017-07-02')   # 可以写
    f.close()
    

      结果:

     1.5 修改文件

     尝试直接以r+模式打开文件,默认会把新增的内容追加到文件最后面,想要修改中间的内容,怎么办?

    可以用seek(中间位置)

    f = open(file='user_list1', mode='r+', encoding='utf-8')
    f.seek(6)
    f.write("测试工程师")
    f.close()
    

      

  • 相关阅读:
    2017-4-25 winform公共控件属性 菜单和工具栏属性
    2017-4-24 winform窗体基础属性 ico图片生成 不规则窗体的移动 恶搞小程序
    2017-4-23 知识补充
    C# 动态方法和静态方法的区别 (转)
    2017-4-21 Ado.net字符串攻击 防御 实体类 数据访问类 属性扩展 三层架构开发
    ToString()用法 select top 子句
    2017-4-19 ado.net 增,删,改,查,练习
    2017-4-17 类库 通用变量 is和as运算符 委托
    2017-4-16 多态 构造函数 方法重载 静态方法和静态成员
    【2017-03-12】SQL Sever 子查询、聚合函数
  • 原文地址:https://www.cnblogs.com/mike-liu/p/8916635.html
Copyright © 2011-2022 走看看