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

文件打开

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(格式化的符号) 格式化时间
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容