文件读写
①读文件:
f = open('/Users/michael/test.txt', 'r')#打开文件
f.read() #读文件
f.close() #关闭文件
②由于文件读写时都有可能产生IOError
,一旦出错,后面的f.close()
就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally
来实现:
try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()
简化:和前面的try ... finally
是一样的,但是代码更佳简洁,并且不必调用f.close()
方法。
with open('/path/to/file', 'r') as f:
print(f.read()) #注意缩进
③读取二进制文件(rb
读取):
with open('E:/自主学习/python/test.bmp', 'rb') as f:
print(f.read())
④写文件:
写文件和读文件是一样的,唯一区别是调用open()
函数时,传入标识符’w’或者’wb’表示写文本文件或写二进制文件:
with open('/Users/michael/test.txt', 'w') as f: #文件会覆盖
f.write('Hello, world!')
with open('E:/自主学习/python/test.txt', 'a') as f: #追加填写
f.write('\nHello, world!')
StringIO和BytesIO:在内存中读写str和bityes数据
操作文件和目录:在不同系统中操作文件和目录
序列化和反序列化
序列化:把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling。
反序列化:反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。
①序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。
JSON
JSON:如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。