前面的一些碎碎念
两天的耽搁,思考了下,虽然需要全面基础的学习,但是重点还是应该放在实战上。所以后续要速速的推倒这个教程了,用一些数据来实行一些分析:)
认真学习的分割线
打打打打鸡血!!!喝了一点点梅子酒,让我的创造力更加丰丰丰丰富!
IO编程
文件读写
读读读
当我想读文件的时候,我可以做下面的动作。
偷偷的先open()个文件,记得传入文件名和标志符号
然后再小小的read()一下
最后记得close()
f = open(‘/Users/michael/test.txt’, ‘r’)
f.read()
f.close()
当文件不存在的时候是会报错的喔,所以我们可以用try…finally来实现准确的关闭文件。
try:
f = open(‘/path/to/file’, ‘r’)
print(f.read())
finally:
if f:
f.close()
更简洁的版本是
with open(‘/path/to/file’, ‘r’) as f:
print(f.read())
如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便。
当读入的文件为二进制文件或图片等其他,用rb模式打开文件即可。当读入的文件不是UTF-8编码的时候,要传入encoding参数。
写写写
当我想写文件的时候,我在open()的时候把标志符改为w
f = open(‘/Users/michael/test.txt’, ‘w’)
f.write(‘hello world’)
f.close()
可以传入wb来写二进制文件。写特定编码的文件的时候,传入encoding参数。为了不然后面写入的文件覆盖前面的,用a(append)模式写入即可,会追加到文件末尾。
StringIO和BytesIO
StringIO
StringIO顾名思义就是在内存中读写str。要把str写入StringIO,首先要先创建一个StringIO,然后写入~
用getvalue来获取写入后的str。如果想读取StringIO,也可以用str初始化一个StringIO,用readline()读取。
BytesIO
这位朋友是用来操作二进制文件的,在内存中读写bytes。
>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write(‘中文’.encode(‘utf-8′))
6
>>> print(f.getvalue())
b’\xe4\xb8\xad\xe6\x96\x87’
然后同StringIO一样,也可以用一个bytes初始化BytesIO,然后像文件一样读取。
—–写于2019-01-09
发表回复