python-9-IO编程
2018-06-18 02:55:55来源:未知 阅读 ()
1-文件读写
f = open('d:/file.txt','r') #如果文件不存在会报异常 print(f.read()) #一次性读取所有内容 f.close()
1.2 由于文件操作会用异常, 每次用try不方便
with open("d:/file.txt","r") as f: print(f.read())
1.3 文件太大,一次性读取不科学,如果是配制文件
with open("d:/file.txt","r") as f: for line in f.readlines(): print(line.strip())
1.4 指定字符编码
f = open('d:/file.txt', 'r', encoding='gbk',errors='ignore') #errors='ignore' 参数会忽略中的一些编码错误 f.read()
1.5 写文件,w会删除原来的,a是追加
f = open('d:/file.txt', 'a') f.write("go out") f.close()
https://docs.python.org/3/library/functions.html#open
2-StringIO和BytesIO
StringIO顾名思义就是在内存中读写str。
from io import StringIO f = StringIO() f.write('hello') f.write(' ') f.write('word!') print(f.getvalue()) #hello word!
2.2 BytesIO
StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO
from io import BytesIO f = BytesIO() f.write('中文'.encode('utf-8')) print(f.getvalue()) #b'\xe4\xb8\xad\xe6\x96\x87' #初始化BytesIO from io import BytesIO f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87') print(f.read())
3-操作文件和目录
3.1环境变量
import os os.environ#环境变量 os.environ.get('OS') #得到指定的key
3.2 文件路径操作
os.path.abspath(".") os.path.join('d:/','fffff') os.mkdir("d:/testdir") #如果存在创建会报错 os.rmdir("d:/testdir")
3.3 文件路径
os.path.split('/Users/michael/testdir/file.txt')#('/Users/michael/testdir', 'file.txt') os.rename('test.txt', 'test.py') #对文件重命名 os.remove('test.py') #删除文件 [x for x in os.listdir('.') if os.path.isdir(x)] #列出当前目录下的所有目录 [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'] #列出所有的.py文件
4-序列化操作(在其他语言中也被称之为serialization,marshalling,flattening等等)
import pickle d = dict(name='Bob', age=20, score=88) print(pickle.dumps(d)) f=open('dump.txt','wb') pickle.dump(d,f) #序列化到文件 f.close()
4.2 反序列化
f = open('dump.txt','rb') d=pickle.load(f)#反序列化 f.close() print(d)
4.3 json序列化
import json d = dict(name='Bob111', age=20, score=88) print(json.dumps(d))
4.4 json序列化 进阶
import json class Student(object): def __init__(self,name,age,score): self.name = name self.age = age self.score = score s = Student('dashen', 20, 80) def student2dict(std): return { 'name':std.name, 'age':std.age, 'score':std.score } print(json.dumps(s,default=student2dict)) print(json.dumps(s,default=lambda obj:obj.__dict__))
4.5 json反序列化
def dict2student(d): return Student(d['name'], d['age'], d['score']) json_str = '{"age": 20, "score": 88, "name": "Bob"}' stu = json.loads(json_str, object_hook=dict2student) print(stu.score) #88
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- PythonDay08 2019-08-13
- python 之 前端开发(form标签、单选框、多选框、file上传文 2019-08-13
- 把Python项目打包成exe文件 2019-08-13
- pycharm 新建py文件写时有作者和时间 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash