zoukankan      html  css  js  c++  java
  • Python 文件操作、异常

    windows默认是gbk编码,又称cp936,汉字占2个字节。

    utf-8被称为万国码,这个编码下,汉字占3个字节。

    ASCII也是一种编码。

    一、文件操作

    最基本的文件打开:

    f = open("a.txt","w")
    # f 文件流、输入输出流
    # "r"模式,没有该文件会报错
    # "w"模式,会清空之前的内容,无文件会新建

    (一).文件的打开模式:

    r 只读模式,文件不存在时会报错。

    w 写入模式,文件存在会清空之前的内容,文件不存在则会新建文件。

    x 写入模式,文件存在会报错,文件不存在则会新建文件。

    a 追加写入模式,不会清空之前的内容,直接将写入的内容添加到后面。

    b 以二进制模式读写文件,wb rb ab。

    + 可读写模式,r+ w+ x+ a+,这几种模式还遵循了r w x a的基本原则。

    (二).文件的读取:

    f.read() 全部读出来。读完后,光标在文件最后了,再运行一次因为后面没有数据了(空值了)就会返回空值。

    f.readline() 只读一行,读完后光标停在读到的那一行最后。

    f.readlines() 全部读取,将每一行作为list中的元素包装进list,返回list

    小技巧:len(f.redlines())可以看出有几行。

    (三).文件的写入:(注:写入如需换行需要自己把" "写进去)

    f.write() 把内容以字符串的形式通过write()方法写入文件中。

    需要紧接f.flush()方法,因为文件是运行在内存中,需要冲刷一下,才会从缓存写入磁盘。类似于“保存”。

    f.writelines()小括号中需要是列表,列表中的内容由字符串元素组成。如:f.writelines(["111","222"])

    (四).文件关闭:f.close()

    (五).查看信息:(不是方法啊!是属性!)

    f.closed 返回一个布尔值,查看文件是否已关闭。

    f.mode 返回文件打开的模式。

    f.name 返回文件名。

    (六).光标位置:

    f.seek(0,0) 第一个参数:偏移量,往后偏移。第二个参数:起始位置。(注意光标的位置)

    f.tell() 返回光标的位置。

    (七).with open:

    用with open方式打开的文件,里面的语句执行完后会自动关闭文件。无需写flush()了。

    with open("a.txt", "a") as f:
        f.read()

    二、异常

    一旦遇到报错(异常),程序就崩溃终止了,用户体验相当不好。所以,捕获异常非常必要,把可能会报错的代码,包装到 try...except 块中。

    尽量避免写BaseException,所有异常的祖宗。

    else:正常结束才执行。

    finally:无论如何都会执行,必定会执行。比如:操作一个文件输入输出时出错了,弹药保护已有的内容,就把关不语句放进finally块中。finally块中一般不写逻辑语句。

    raise:自己手动抛出异常。

    python3的官方帮助文档可以查看内建异常:

  • 相关阅读:
    7月25 SVN 提交报错 | mybatis like | 数据库字段设计 | 打包打小包
    7月24 springboot 打包打小包 | mybatis 逆向工程 | 接口返回数据 | 启动打包注意事项 | springboot redis 引入
    7月20号 添加字段报错 | 密码加密与传输
    7月19 登录失败 错误次数 | 字段类型被修改bug | 日志
    7月14 Enity对象的抽取
    7月13 mybatis调用存储过程
    7月12 导入项目到svn | logback配置日志输出
    7月11 配置数据库自己挖坑 | 代码覆盖率测试 | MockMvc 测试用例
    书架
    试题库问题
  • 原文地址:https://www.cnblogs.com/quanquan616/p/8331416.html
Copyright © 2011-2022 走看看