1.  读文件 
  
1. 
2. 
3. 
4.  f.read(size):size:一次读取文件多少的字节
 f.readlines():按行读取,读取的内容以列表返回
 f.readline():一行一行 读取
5. 
6.  由于文件读写都有可能产生IOError,一旦出错,后面的f.close()就不会调用,所以,为了保证文件是否执行出错都能够正确的关闭文件,我们可以使用try … finally来实现.
 try:
     f = open('/path/demo/file','r')
     print(f.read())
 finally:
     if f:
         f.close() 
7.  另一种关闭文件的方法:(比较常用)
 with open('/path/demo/file', 'r')  as f:
     print(f.read())
 该语句会自动调用f.close()
2.  写文件 
  
1.  写入普通文件,with open(path,"w",encoding="utf-8") as f:

     f.write(str):写入的一定是字符串类型

     path:若此路径存在,则覆盖此文件,若不存在,则创建文件.

 "a"模式下,追加文件内容.写入普通文件,with open(path,"a",encoding="utf-8") as f:
2. 
3. 
4.  以'w'模式写入文件时,如果文件已经存在,直接覆盖(相当于删掉后新写入一个文件),如果我们希望追加到文件的末尾怎么办?可以传入'a'以追加模式写入.
 with open('/users/demo/test.txt', 'a') as f:
 f.write('hello, world')
3.  StringIO 
  
1. 
2.  要把str写入StringIO,我们需要先创建一个StringIO,然后像文件一样写入即可.
 from io import StringIO
 f = StringIO()
 f.write("hello")
 f.write("    ")
 f.write('world')
 #获取写入后的str
 print(f.getvalue())
4.  二进制文件 
  
1. 
2.   f = open('/users/demo/gbk.txt','r',encoding = 'gbk',errors = 'ignore')
5.  ByteIO 
  
1. 
2.  from io import BytesIO
 f = BytesIO()
 f.write("中文".encode('utf-8'))
 print(f.getvalue())
3.  from io import BytesIO
 f = BytesIO(b'\xe4\xb8\xad\xe6\x96\x87')
 f.read()
 b'\xe4\xb8\xad\xe6\x96\x87'
6.  JSon 
  
1. 
2.  json.dumps(obj):将obj序列化为json字符串
 a = {'name': 'wang', 'age': 29}
  b = json.dumps(a)
3.  json.loads(s):将json字符串反序列化为Python的基本数据类型.
 name_emb = {'a':'1111','b':'2222','c':'3333','d':'4444'} 
 jsDumps = json.dumps(name_emb)  
 jsLoads = json.loads(jsDumps) 
 {"a": "1111", "c": "3333", "b": "2222", "d": "4444"}
 {u'a': u'1111', u'c': u'3333', u'b': u'2222', u'd': u'4444'}
 <type 'str'>
 <type 'dict'>
4. 
7.  读写cvs文件