python 学习笔记(十二) 文件和序列化
python 文件读写和序列化学习。
## python文件读写
`1 打开并且读取文件`
f = open('openfile.txt','r')
print(f.read())
f.close()
`2 打开并且读取一行文件`
f = open('openfile.txt','r')
print(f.readline())
f.close()
`3 打开并以二进制形式读取文件`
f = open('./openfile.txt','rb')
print(f.read())
f.close()
`4 打开并自动关闭文件`
with open('openfile.txt','r') as f:
print(f.read())
`5 读取所有行`
f = open('openfile.txt','r')
for line in f.readlines():
print(line.strip())
f.close()
`6 以gbk方式读取文件`
f = open('openfiles.txt','r',encoding='gbk' )
print(f.read())
f.close()
`7 以追加方式写`
with open('openfile.txt', 'a') as f:
f.write('\n')
f.write('Hello World!!!')
## python IO操作
`1 StringIO 写字符串`
from io import StringIO
f = StringIO()
f.write('hello')
f.write(' ')
f.write('world !')
print(f.getvalue() )
`2 StringIO 读取字符串`
from io import StringIO
f = StringIO("Hello\nWorld\nGoodBye!!")
while True:
s = f.readline()
if(s==''):
break
print(s.strip())
`3 BytesIO 读写二进制字符`
from io import BytesIO
f = BytesIO()
f.write('中文'.encode('utf-8') )
print(f.getvalue()) from io import BytesIO
f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
f.read()
## python环境变量和目录
`1 打印系统的名字和环境变量`
import os
print(os.name)
print(os.environ)
`2 获取指定key值得环境变量`
print(os.environ.get('PATH'))
`3 相对路径转化绝对路径`
print(os.path.abspath('.'))
`4 在某个目录下创建一个新的目录`
#首先把新目录的完整路径表示出来
print(os.path.join('/Users/michael','testdir') )
# 然后创建一个目录:
#print(os.mkdir('/Users/michael/testdir') )
# 删掉一个目录:
#print(os.rmdir('/Users/michael/testdir') )
`5 路径切割`
print(os.path.split('/path/to/file.txt') )
print(os.path.splitext('/path/to/file.txt') )
`6 文件重命名和删除`
#print(os.rename('test.txt', 'test.py') )
#print(os.remove('test.py'))
`7 列举当前目录下所有目录和py文件`
print([x for x in os.listdir('.') if os.path.isdir(x) ])
print([x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1] == '.py'])
## python序列化
`1 序列化为二进制`
import pickle
d = dict(name='Bob', age=20, score=88)
print(pickle.dumps(d))
`2 序列化写入文件`
f = open('openfile3.txt','wb')
print(pickle.dump(d, f) )
f.close()
`3 反序列化读取文件`
f = open('openfile3.txt','rb')
d = pickle.load(f)
f.close()
print(d)
`4 序列化为json`
import json class Student(object):
def __init__(self, name, age, score):
self.name = name
self.age = age
self.score = score def convertFunc(std):
return {'name':std.name,
'age':std.age,
'score':std.score} s = Student('Bob', 20, 88)
print(json.dumps(s,default=convertFunc))
print(json.dumps(s,default=lambda obj:obj.__dict__))
`5 反序列化`
def revert(std):
return Student(std['name'], std['age'], std['score']) json_str = '{"age": 20, "score": 88, "name": "Bob"}'
print(json.loads(json_str, object_hook=revert ) )
我的微信公众号

python 学习笔记(十二) 文件和序列化的更多相关文章
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- python 学习笔记十二 html基础(进阶篇)
HTML 超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准,它通过标记符号来标记要显示的网页中的各个部分.网页文件本身 是一种文本文件,通过在文本文件中添加标记符, 可以告诉浏览 ...
- Python学习笔记十二
HTML全称:Hyper Text Markup Language超文本标记语言 不是编程语言 HTML使用标记标签来描述网页 2. HTML标签 开始标签,结束标签. 例如:<html&g ...
- python学习笔记(十)、文件操作
在前面我们了解到了没得模块,其中有一个模块为fileinput,为文件操作模块,不知道小伙伴们是否还记得? 1 打开文件 要打开文件,可以使用fileinput中的fileinput.input函数进 ...
- python学习笔记(十二)-网络编程
本文结束使用 Requests 发送网络请求.requests是一个很实用的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到.可以说,Requests 完全满足如今网络的需求. ...
- python 学习笔记十二 CSS基础(进阶篇)
1.CSS 简介 CSS 指层叠样式表 (Cascading Style Sheets) 样式定义如何显示 HTML 元素 样式通常存储在样式表中 把样式添加到 HTML 4.0 中,是为了解决内容与 ...
- python学习笔记(十 二)、操作数据库
每一种语言都少不了多数据库进行各种操作. python支持多种数据库.有关python支持的数据库清单,请参阅:https://wiki.python.org/moin/DatabaseInterfa ...
- python学习笔记十二:类的定义
demo #!/usr/bin/python class Person: name = 'jim' age = 25 def say(self): print 'My name is ' + self ...
- python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL
python3.4学习笔记(十二) python正则表达式的使用,使用pyspider匹配输出带.html结尾的URL实战例子:使用pyspider匹配输出带.html结尾的URL:@config(a ...
随机推荐
- openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 三
openstack-r版(rocky)搭建基于centos7.4 的openstack swift对象存储服务 一 openstack-r版(rocky)搭建基于centos7.4 的openstac ...
- rz和sz上传下载文件
安装软件包 yum install lrzsz 上传文件,输入rz选择文件上传(可以按住shift键多选) # rz sz 下载文件到本地,选择保存文件夹 # sz dd xshell设 ...
- SQL中NULL的妙用
商品表Products 库房表WarehouseDistrict 库存表WarehouseStock 一般写法 ;WITH stock AS ( SELECT DistrictId, ProductI ...
- 洛谷【P1052】过河
https://www.luogu.org/problemnew/show/P1052 题目描述 在河上有一座长度为 L 的独木桥, 一只青蛙想沿着独木桥从河的一侧跳到另一侧. 在桥上有一些石子, 青 ...
- 复利计算器app发布
复利计算器app发布 抱歉:由于无法实现服务端的持续开启,发布的app仅为简单的单机版,暂时舍弃了c/s版本的一些功能,如:投资动态管理功能. 应用详情博客:请点击这里 apk下载地址1(百度手机助手 ...
- Java中的抽象类abstract
abstract定义抽象类 abstract定义抽象方法,只需要声明,不需要实现 包含抽象方法的类是抽象类 抽象类中可以包含抽象方法,也可以包含普通方法 抽象类不能直接创建,可以定义父类引用变量指向子 ...
- OC创建对象并访问成员变量
1.创建一个对象 Car *car =[Car new] 只要用new操作符定义的实体,就会在堆内存中开辟一个新空间 [Car new]在内存中 干了三件事 1)在堆中开辟一段存储空间 2)初始化成员 ...
- python配置文件读取
在代码实现的过程中,我们经常选择将一些固定的参数值写入到一个单独的配置文件中.在python中读取配置文件官方提供了configParser方法. 主要有如下方法(找官文): (这家伙很懒,直接复 ...
- wx import require的理解
服务器端的Node.js遵循CommonJS规范.核心思想是允许模块通过require 方法来同步加载所要依赖的其他模块,然后通过 exports或module.exports来导出需要暴露的接口. ...
- Git(未完待续)
Git的历史咱们就不多说来,我还是喜欢直白点,直接来干货吧 在Linux上安装Git 不同的系统不同的安装命令,基础的就不说来,centos直接yum就ok. 安装完成后,还需要最后一步设置,在命令行 ...