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 ...
随机推荐
- 从零开始的Python学习Episode 10——函数
函数 一.函数的创建 简单格式 def function_name(参数表): 函数体 return 如果没有写return,函数会默认返回一个none 二.函数的参数 必需参数: 调用函数时必需参数 ...
- Java fluent风格(转载)
转载:java Fluent风格 一.我们先写一个通常的,即不使用fluent风格 1.实体类 package com.xbq.demo.stu; /** * @ClassName: Student ...
- 笔试题——C++字符排序
题目:字符排序 题目介绍:输入一组以空格隔开的字数串,将它们奇数位升序排序,偶数位降序排序,再重新输出成新的字数串. 例: 输入: 4 6 2 3 6 7 8 1 奇数位:4 2 6 8 ——2 4 ...
- 笔试题:C++打印队列
题目:打印队列 题目介绍:现在用打印机打印队列,已知打印任务有9个优先级(1-9),现在给出一系列任务,求输出打印顺序(任务下标,从0开始). 例: 输入:9,3,5,4,7,1 输出:0,4,2,3 ...
- React 初学
React.createClass({}); getInitialState,this.setState({}); {}解读代码块,外层不要加引号,比如onChange={this.handleCha ...
- 3D打印产业链全景图
- 常用 php server
php编程中经常需要用到一些服务器的一些资料,我把常用的用高亮的方式贴出来,其余的放在后面.方便以后查阅 复制代码代码如下: $_SERVER['HTTP_ACCEPT_LANGUAGE']/ ...
- 总结在Visual Studio Code运行node.js项目遇到的问题
一.cannot find module “lodash” 项目运行时出现以下错误: Error: Cannot find module 'lodash' at Function.Module._re ...
- SDN练习一
SDN练习第一题 题目描述 实现网络拓扑: 具体要求: 南向接口采用OpenFlow 协议. 可查看网络的拓扑信息视图. H1.H2.H3.H4 任意两两可互通. 实现思路 利用mininet可视化图 ...
- 博弈---ZOJ 2083 Win the Game(染绳子)
原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2083 大意:两个人分别对n条绳子染 每次染m长 最后染不下的输,问先 ...