1

前面的一些碎碎念

两天的耽搁,思考了下,虽然需要全面基础的学习,但是重点还是应该放在实战上。
所以后续要速速的推倒这个教程了,用一些数据来实行一些分析:)

认真学习的分割线

打打打打鸡血!!!
喝了一点点梅子酒,让我的创造力更加丰丰丰丰富!

IO编程

文件读写

读读读

当我想读文件的时候,我可以做下面的动作。

  1. 偷偷的先open()个文件,记得传入文件名和标志符号
  2. 然后再小小的read()一下
  3. 最后记得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,然后写入~

clipboard.png

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


林奈木
35 声望7 粉丝

深水静流。