美文网首页
(七) 学习笔记: python文件操作pickle模块使用和时

(七) 学习笔记: python文件操作pickle模块使用和时

作者: fanhang64 | 来源:发表于2018-04-05 17:27 被阅读296次

    文件打开

    open(file, mode='r', buffering=-1, encoding=None, ...)
    

    在使用open()的时候, 如果文件不存在, 会抛出IOError异常
    参数介绍:

    • file: 打开的文件名。
    • mode: 文件打开方式。
      'r': 只读的方式打开(默认)
      'rb': 已二进制只读的形式打开
      'w': 清空写的形式打开, 如果文件不存在则尝试创建
      'wb': 清空写二进制形式打开, 如果文件不存在则尝试创建
      'a': 追加写, 文件不存在则尝试创建
      'ab': 二进制的追加写, 文件不存在则尝试创建
    • buffering: 用于设置缓冲策略。
    • encoding: 设置编码方式或解码的方式, 只适用于文本文件, 二进制文件设置会报错。 不设置默认为系统编码。
      实例:
    file = open('1.txt', 'r', encoding="utf-8")  # 以文本的形式读取文件
    file = open("2.txt", 'rb', encoding="utf-8")  # error 二进制形式打开会报ValueError错
    

    文件读取

    函数名 函数说明
    file.read([size]) 不设置参数读取全部内容, 如果传入size, 安装给定的字节长度读取
    file.readline() 读取一行
    file.readlines() 读取所有行,以列表的形式返回
    next(file) file对象实现了迭代器的next()的功能, 可以一行一行的读取

    文件的写

    函数名 函数说明
    file.write(str) 写入字符串(可为文字,可为二进制数据), 返回写入的字节数
    file.writelines(列表) 向文件写入一个列表, 只把列表中的文件写入,不保留格式
    file.flush() 刷新缓冲区, 将内容立即写入到文件
    file.close() 文件关闭

    文件的编码和解码

    str.encode(字符编码) # 编码
    b'Str'.decode(字符编码) # 解码

    with语句的使用

    使用with语句代码更佳简洁, 并且不必调用 f.close() 方法, 来刷新文件内容

    with open(file, mode='r', encoding='utf-8', ..) as fp:
        fp.write(str)
    

    pickle模块序列化操作

    1. dump()方法写入到文件里
    import pickle
    myList = ['a', 'b', 'c']
    file = open(文件名, 'wb')  # 必须是二进制的方式进行读写
    pickle.dump(数据, file对象) 
    
    2. load() 方法将数据反序列化后取出来
    import pickle
    file = open(文件名, 'rb')  # 必须是二进制的方式进行读写
    myList = pickle.load(file对象)
    print(myList)  # ['a', 'b', 'c']
    
    # 多次dump, 需要多次load读取文件
    import pickle
    file = open("a.txt", 'wb')  # 必须是二进制方式读写
    myList = [1,2,3]
    myDict = {'id':1, 'age':18}
    pickle.dump(myList, file)  # 写入myList 
    pickle.dump(myDict, file) # 写入myDict 
    # 读取
    file = open("a.txt", 'rb') 
    file = open("a.txt", 'rb')  # 必须是二进制方式读写
    myList = [1,2,3]
    myDict = {'id':1, 'age':18}
    myList = pickle.load(file)  # [1, 2, 3]
    myDict = pickle.load(file)  #  {'id': 1, 'age': 18}
    print(myList, myDict)
    
    3. dumps(obj)方法将数据序列化后直接返回

    以字节对象形式返回封装的对象, 不需要写入文件中

    myList = [1,2,3]
    bObj = pickle.dumps(myList )
    
    4. loads(bytes_obj) 方法用于将序列化后对象进行反序列化

    从字节对象中读取被封装的对象, 并返回

    # loads()的操作
    myList = pickle.loads(bObj)  #  [1,2,3]
    

    时间模块

    函数名 函数说明
    time.time() 返回当前的秒数(时间戳)
    time.localtime([时间戳]) 返回时间的元组, 参数为时间戳(可选), 不传参数为当前时间
    time.asctime() 返回格式化后的英文文本时间
    time.strftime(格式化时间占位符, [时间元组]) 格式化时间, 默认本地时间
    time.mktime(时间元组) 将时间元组转为时间戳返回
    time.sleep(秒) 推迟调用线程的时间
    time.strptime("时间字符串", 格式化时间占位符) 将指定的时间格式转换为时间元组
    time.clock() 用浮点数计算当前cpu运行某个程序所花费的时间

    常用时间模块: time, datetime
    time模块常用的函数
    概念: 时间戳是指格林威治1970年1月1日00时00分00秒到现在的整数或者浮点数的秒数

    函数名 函数说明
    time.time() 返回当前的秒数(时间戳)
    time.localtime([时间戳]) 返回时间的元组, 参数为时间戳(可选), 不传参数为当前时间
    time.asctime() 返回格式化后的英文文本时间
    time.strftime(格式化时间占位符, [时间元组]) 格式化时间, 默认本地时间
    time.mktime(时间元组) 将时间元组转为时间戳返回
    time.sleep(秒) 推迟调用线程的时间
    time.strptime("时间字符串", 格式化时间占位符) 将指定的时间格式转换为时间元组
    time.clock() 用浮点数计算当前cpu运行某个程序所花费的时间

    实例:

    # 给出时间 转换为时间戳
    myStr = "2018-1-5 14:28:00"
    timeTuple = time.strptime(myStr, "%Y-%m-%d %H:%M:%S")
    time.mktime(timeTuple)  # 返回时间戳
    

    时间的格式化符号

    符号 符号说明
    %Y 4位年份
    %y 2为年份
    %m 月份(1-12)
    %d 一个月的某一天(1-31)
    %H 24小时制(0-23)
    %M 分钟
    %S 秒数
    %a 格式化为简化英文文本的星期
    %A 格式化为全称英文文本的星期
    %j 一年中的第几天
    %w 返回星期中的第几天(0-6)
    %x 格式化成本地的月/日/年
    %X 格式化成本地的时:分:秒
    函数名 函数说明
    datetime.now() 返回当前的时间
    datetime.datetime(年,月,日,时,分,秒,微妙数) 获取指定的时间
    时间.timestamp() 通过时间返回时间戳
    datetime.formtimestamp(时间戳) 把时间戳转换为时间
    datetime.now().strftime(格式化的符号) 格式化时间

    datetime模块
    from datetime import datetime # 从库中导入模块

    函数名 函数说明
    datetime.now() 返回当前的时间
    datetime.datetime(年,月,日,时,分,秒,微妙数) 获取指定的时间
    时间.timestamp() 通过时间返回时间戳
    datetime.formtimestamp(时间戳) 把时间戳转换为时间
    datetime.now().strftime(格式化的符号) 格式化时间

    相关文章

      网友评论

          本文标题:(七) 学习笔记: python文件操作pickle模块使用和时

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