一.读写文件

1.open:打开文件

open(path, mode, encoding='xxx', errors='ignore')

mode取值:
rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开,先读后写(注意需要将文件指针重置为0,f.seek(0), 否则将变成追加内容)
w+ 以读写模式打开 (参见 w ), 先写后读
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )

2.read:读取全部内容

3.readline:读取一行内容:

4.readlines:读取所有行,作为列表返回

5.write:写入内容

6.writelines:写入序列字符串

7.close:关闭打开的文件,打开的文件必须及时关闭

示例代码:

f = open('a.txt', 'r')
content = f.read()
f.close() print(content)

  

示例代码2:

f = open('a.txt', 'r')
content = ''
for line in f.readlines():
content += line.strip() #过滤尾部换行符
f.close() print(content)

  

示例代码3:

f = open('a.txt', 'r')
content = ''
for line in f.readlines():
content += line.strip() #过滤尾部换行符
f.close() print(content)

  

二.更加简便的方法with

1.因为读取文件后要关闭,所以一般代码会如下所示:

content = ''
try:
f = open('a.txt', 'r')
for line in f.readlines():
content += line.strip() #过滤尾部换行符
except BaseException:
pass
finally:
f.close() print(content)

  

2.使用with

示例代码

content = ''
with open('a.txt', 'r') as f:
for line in f.readlines():
content += line.strip() #过滤尾部换行符
print(content)

  

示例代码:

with open('a.txt', 'a') as f:
f.writelines(['Hello, world!\n','Hello, world!\n'])

  

二.内存读写

1.字符串读写

借助StrongIO和文件读写大致相同,调用close时,内存释放

示例:

from io import StringIO

f = StringIO()
f.write('hello')
f.write('word')
print(f.getvalue())
f.close()

  

2.字节读写

借助BytesIO和文件读写大致相同,调用close时,内存释放

from io import BytesIO

f = BytesIO()
f.write('你'.encode('utf-8')) #写入经过UTF-8编码的bytes
f.write('好'.encode('utf-8')) #写入经过UTF-8编码的bytes
print(f.getvalue())
f.close()

  

三.操作文件和目录

1.系统类型:

>>> import os
>>> os.name
'nt'

  

posix,说明系统是Linux、Unix或Mac OS X,如果是nt,就是Windows系统。

2.环境变量:

>>> os.environ
>>> os.environ.get('PATH') #获取其中一项

  

3.目录/路径

os.path模块中的方法

>>> os.path.abspath('.') #当前目录绝对路径
>>> os.path.join(os.path.abspath('.'), 'test') #合并路径
>>> os.mkdir('ror') #创建目录
>>> os.rmdir('ror') #删除目录
>>> os.rename('test.txt', 'test.py') #文件重命名
>>> os.remove('test.py') #删除文件

  

#拆分路径
>>> os.path.split('/usr/ror/a.txt')
('/usr/ror', 'a.txt') #拆分扩展名
>>> os.path.splitext('/usr/ror/a.txt')
('/usr/ror/a', '.txt')

  

#列出当前目录下所有的txt文件
>>> [file for file in os.listdir('.') if os.path.isfile(file) and os.path.splitext(file)[1] == '.txt'] #拷贝文件(拷贝当前目录下a.txt到b.txt)
>>> import shutil
>>> shutil.copyfile('a.txt', 'b.txt')

  

四.序列化/反序列化

1.序列化

示例代码:

>>> import pickle
>>> d=dict(age=10,name='g')
>>> pickle.dumps(d) #dumps 方法把任意对象序列化成一个bytes
>>> f=open('a.txt', 'wb')
>>> pickle.dump(d, f) #dump()直接把对象序列化后写入一个文件对象
>>> f.close()

  

2.反序列化

可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象,也可以直接用pickle.load()方法从一个文件对象中直接反序列化出对象

>>> f=open('a.txt', 'rb')
>>> d=pickle.load(f)
>>> f.close()
>>> d
{'age': 10, 'name': 'g'}

  

五.JSON

1.dict

>>> import json
>>> d=dict(age=10,name='g')
>>> json_str = json.dumps(d) #从字典/对象序列化
>>> json_str
'{"age": 10, "name": "guobin"}'
>>> json.loads(json_str) #从字符串反序列化
{u'age': 10, u'name': u'guobin'}

  

2.class

示例代码

import json

class Foo:
def __init__(self, name, age):
self.name = name
self.age = age # json encode obj
f = Foo('g', 15)
print(json.dumps(f.__dict__)) #json decode obj
def hook(d):
return Foo(d['name'], d['age'])
f2 = json.loads('{"name": "g", "age": 15}', object_hook= hook)
print(f2)

  

输出:
{"name": "g", "age": 15}
<__main__.Foo object at 0x00000213E383A940>

IO/序列化/JSON的更多相关文章

  1. JavaScriptSerializer 序列化json 时间格式

    利用JavaScriptSerializer 序列化json 时间格式,得到的DateTime值值显示为“/Date(700000+0500)/”形式的JSON字符串,显然要进行转换 1.利用字符串直 ...

  2. python学习之文件读写,序列化(json,pickle,shelve)

    python基础 文件读写 凡是读写文件,所有格式类型都是字符串形式传输 只读模式(默认) r  f=open('a.txt','r')#文件不存在会报错 print(f.read())#获取到文件所 ...

  3. 使用 ServiceStack.Text 序列化 json的实现代码【转】

    转自:http://www.jb51.net/article/38338.htm 今天发篇文章总结下自己使用 ServiceStack.Text 来序列化 json.它的速度比 Newtonsoft. ...

  4. 使用 ServiceStack.Text 序列化 json 比Json.net更快

    本节将介绍如何使用ServiceStack.Text 来完成高性能序列化和反序列化操作. 在上章构建高性能ASP.NET应用的几点建议 中提到使用高性能类库,有关于JSON序列化的讨论. 在诊断web ...

  5. Jil序列化JSON

    使用Jil序列化JSON提升Asp.net web api 性能   JSON序列化无疑是Asp.net web api 里面性能提升最重要的一环. 在Asp.net web api 里面我们可以插入 ...

  6. 序列化json对象,通过ajax传入asp.net mvc后台

    序列化json对象,通过ajax传入asp.net mvc后台 序列化json对象,通过ajax传入asp.net mvc后台   今天遇到一个问题,准备把组织好的json对象通过jquery.aja ...

  7. linkList hashSet ArrayList IO 序列化 1.1.瞬态transient .字符编码表 Properties

      Day12 IO  序列化 .递归_递归的概念_注意事项 1.递归:方法的递归调用--它是一种方法调用的方式--方法可以调用其本身 2.注意事项: 1).递归必须要有一个"出口(结束的条 ...

  8. Pythoy 数据类型序列化——json&pickle 模块

    Pythoy 数据类型序列化--json&pickle 模块 TOC 什么是序列化/反序列化 pickle 模块 json 模块 对比json和pickle json.tool 命令行接口 什 ...

  9. mvc 使用Newtonsoft.Json进行序列化json数据

    mvc 使用Newtonsoft.Json进行序列化json数据 JsonResult  使用js 序列号化,先集成扩展.使用newtonsoft http://blog.csdn.net/zhang ...

随机推荐

  1. 关于std::ios::sync_with_stdio(false)

    std::ios::sync_with_stdio(false); 很多C++的初学者可能会被这个问题困扰,经常出现程序无故超时,最终发现问题处在cin和cout上,(甚至有些老oier也会被这个问题 ...

  2. 一个微服务+DDD(领域驱动设计)的代码结构示例

    前有幸拜读过诸多大神关于DDD的实现落地等文章,学习较多,受益匪浅,在此推荐 : https://www.cnblogs.com/hafiz/p/9388334.htmlhttps://blog.cs ...

  3. 洛谷——P2009 跑步

    P2009 跑步 题目背景 跑步是一项有意思的运动,尤其是可以开发人的脑筋.常神牛很喜欢跑步. 题目描述 常神牛跑步的场地是一个多边形(边数≤20,每个顶点用英文大写字母表示),并且在这个多边形内部, ...

  4. Linux命令之telnet

    telnet [-8EFKLacdfrx] [-X authtype] [-b hostalias] [-e escapechar] [-k realm] [-l user] [-n tracefil ...

  5. Java小对象的解决之道——对象池(Object Pool)的设计与应用

    一.概述 面向对象编程是软件开发中的一项利器,现已经成为大多数编程人员的编程思路.很多高级计算机语言也对这种编程模式提供了很好的支持,例如C++.Object Pascal.Java等.曾经有大量的软 ...

  6. 在intellij idea 中进行android 单元测试

    本次用来测试的代码是sqlite进行数据操作. ######右键选择要进行单元测试的应用 #############弹出选择框,选择Android>Test Module>Next ### ...

  7. 【拓扑排序】【bitset】Gym - 101128A - Promotions

    给你一张DAG,若选择u点,则必须先选择所有能到达其的点.问你在选择A个点的情况下,哪些点必选:选择B个点的情况下,哪些点必选:选择B个点的情况下,哪些点一定不选. 选择A个点的情况,必选的点是那些其 ...

  8. bzoj 2468: [中山市选2010]三核苷酸

    2468: [中山市选2010]三核苷酸 Description 三核苷酸是组成DNA序列的基本片段.具体来说,核苷酸一共有4种,分别用’A’,’G’,’C’,’T’来表示.而三核苷酸就是由3个核苷酸 ...

  9. Excel | 如何用Excel实现证件照底色调换

    这段时间因为一些事情需要用到证件照这个东西,大家应该都清楚,不管是简历还是各种考试上面,都需要贴上一张规规矩矩的证件照片或是上传电子照片. 通常,我们到照相馆照证件照的时候,无外乎红底.蓝底以及白底这 ...

  10. GCC,LLVM,Clang编译器对比

    http://www.cnblogs.com/qoakzmxncb/archive/2013/04/18/3029105.html   在XCode中,我们经常会看到这些编译选项(如下图),有些人可能 ...