博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IO/序列化/JSON
阅读量:6957 次
发布时间:2019-06-27

本文共 3400 字,大约阅读时间需要 11 分钟。

一.读写文件

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:    passfinally:    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 StringIOf = StringIO()f.write('hello')f.write('word')print(f.getvalue())f.close()

  

2.字节读写

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

from io import BytesIOf = BytesIO()f.write('你'.encode('utf-8')) #写入经过UTF-8编码的bytesf.write('好'.encode('utf-8')) #写入经过UTF-8编码的bytesprint(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 jsonclass Foo:    def __init__(self, name, age):        self.name = name        self.age = age# json encode objf = Foo('g', 15)print(json.dumps(f.__dict__))#json decode objdef 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>

 

转载于:https://www.cnblogs.com/itfenqing/p/10261908.html

你可能感兴趣的文章
Linux系统目录结构
查看>>
一键系统维护工具 v 1.9
查看>>
变量替换删除企业应用场景
查看>>
XenApp/XenDesktop 7.11新功能
查看>>
全面降低windows系统的安全隐患(一)[Web安全大家谈]
查看>>
openstack resize 中遇到的问题
查看>>
scponly 密钥无密码scp登录
查看>>
重置otrs登录密码
查看>>
#15、#16 网络的基本构成与网络的几协议
查看>>
接口调用-http和https
查看>>
修复微商城提交购物车时部分手机号码不识别
查看>>
ORA-00000 这是什么报错!
查看>>
hadoop配置lzo
查看>>
脚本调试:一次换行符导致的报错
查看>>
'ascii' codec can't encode characters in position 1-5: ordinal not in range(128)
查看>>
实战MHDD检测硬盘
查看>>
CCNP课堂练习六:路由器热备份(HSRP)
查看>>
Cisco交换机QOS(限速)详解
查看>>
Cisco IP Phone 7912使用方法简介
查看>>
《CSS权威指南》基础复习+查漏补缺
查看>>