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 ...
随机推荐
- Vue 项目在其他电脑 npm run dev 运行报错的解决方法
一个 Vue 项目从一台电脑上传到 github 上之后,再另外一台电脑上 git clone .并使用 npm run dev 或 npm run start 发生以下报错的解决方法. 报错原因 ...
- 【python 3.6】笨办法取出列表中的字典的value
#python 3.6 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'BH8ANK' x = {'RegionSet': [{' ...
- mysql5.5 升级到 5.7 的坑
1.大概思路,docker 新启一个mysql5.7 端口映射到3307 2. 导出5.5 的.sql文件,导入5.7中 3.测试通过后,可将5.5关闭.5.7端口改回3306 GRANT ALL P ...
- Variable() placeholder() constant() 的区别
转载来自: http://www.studyai.com/article/33e22cef42274e8a
- 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之Scrum篇
如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...
- 01慕课网《进击Node.js基础(一)》Node.js安装,创建例子
版本:偶数位为稳定版本,基数为非稳定版本 - 0.6.x - 0.7.x - 0.8.x -0.9.x -0.10.x -0.11.x 概念:Node.js采用谷歌浏览器的V8引擎,用C ...
- textarea中文提交乱码问题解决
在A.jsp中有如下语句: <textarea rows="10" cols="30" name="texts"><%=r ...
- A9
今日内容: 解决队友提出的问题 明日计划: 商讨界面还有哪些不足的地方 困难: 每天大部分时间被电工实习占走了
- javascript与浏览器学习(一)
待学习………… 20160421 标题:JavaScript中浏览器兼容问题 博客地址:http://www.cnblogs.com/DF-fzh/p/5408241.html 简单 ...
- Alpha 冲刺5
队名:日不落战队 安琪(队长) 今天完成的任务 组织第五次站立式会议(半冲刺总结交流会). 完成草稿箱前端界面. 明天的计划 回收站前端界面. 尝试去调用数据. 还剩下的任务 信息修改前端界面. 遇到 ...