6、IO

 1、IO:输入输出流

A、读文件

	 	# r:读,若文件不存在报错IOError
	 	f = open('c:/1.txt','r')
	 	# 读取文件内容,返回字符串
	 	f.read()
	 	# 关闭文件
	 	f.close()
	 	# 捕获异常
	 	# r:用ASCLL编码方式  rb:用二进制方式
	 	try:
	 		f = open('c:/1.txt','r')
	 	# f = open('c:/1.txt','r','gbk') 指定编码
	 		print r.read()
	 	finally:
	 		if f:
	 			f.close()
	 	# 简洁,用with
	 	with open('c:/1.txt','r') as f:
	 		print f.read()
	 	# 文件过大,反复调用read(size)
	 	f.read(10)
	 	#用每行读取的方式
	 	for line in f.readlines():
	 		print line.strip()

B、写文件

		# w wb
		with open('c:/1.txt', 'w') as f:
	    	f.write('Hello, world!')

2、操作文件与目录

	# os模块
	import os
	# 操作系统名称 POSIX:linux\unix\mac;nt:window
	os.name
	# 环境变量
	os.environ
	# 具体 某变量
	os.getenv('path')
	# 查看绝对路径
	os.path.abspath('.')
	# 创建目录 dir,使用join 连接目录
	os.path.join('c:/','dir') # c:/dir
	os.mkdir('c:/dir')
	# 删除目录
	os.rmdir('c:/dir')
	# 拆分文件与目录
	os.path.split('c:/1.txt') # ('c:/','1.txt')
	# 拆分文件后缀
	os.path.splitext('c:/1.txt') # ('c:/1','txt')
	# 文件重命名
	os.rename('1.txt','1.py')
	# 产出文件
	os.remove('1.py')

3、序列化

	# 引用模块 CPickle用C语言写的快,pickle用Python写的
	try:
		import cPickle as pickle
	except ImportError:
		import pickle
	# 序列化
	d = '123'
	pickle.dumps(d) # 序列化成一个字符串
	# 序列化,保存文件
	f = open('c:/1.py','wb')
	pickle.dump(d,f)
	# 反序列化,读文件
	f = open('c:/1.py','rb')
	d = pickle.load(f)
	f.close()

4、JSON

A:Python集合与json相互转换

	# 传输速度快
	# pythonx对象转json
	import json
	d = {'a':1,'b',2}
	# dumps() 转为json字符串;dump()可以直接将转为的字符串存入文件中
	json.dumps(d)   # json标准字符串 '{"a":1,"b":2}'
	# json转Python对象
	s = '{"a":1,"b":2}'
	# loads() :字符串转为对象;load() 将文件中的字符串读出,转为Python对象
	json.loads(s); # {'a':1,'b',2}

B:类与json相互转换

	#coding=utf-8
	class Student (object):
		def __init__(self,id,name):
			self.id = id
			self.name = name
	class User(object):
		def __init__(self,id,name,age):
			self.id = id
			self.name = name
			self.age = age
	def classTojson(self):
		return {
			'id':self.id,
			'name':self.name
		}
	def StrToStudent(s):
		return Student(s['id'],s['name'])
	if __name__ == '__main__':
		import json
		s = Student(1,'name')
		# 可以自己定义
		print json.dumps(s,default = classTojson)
		# {"id":1,"name":"name"}
		print '-----------------------------'
		
		# json字符串转为对象
		str_stu = '{"id":1,"name":"name"}'
		stu = json.loads(str_stu,object_hook = StrToStudent)
		print stu.id,' --',stu.name
		print '-----------------------------'
		
		u = User(1,'user',12)
		# 可以调用本身带有的方法
		print json.dumps(u,default = lambda obj:obj.__dict__)
		# {"age":12,"is":1,"name":"name"}

猜你喜欢

转载自1151474146.iteye.com/blog/2368472
Io
IO:
今日推荐