前面的一些碎碎念
两天的耽搁,思考了下,虽然需要全面基础的学习,但是重点还是应该放在实战上。
所以后续要速速的推倒这个教程了,用一些数据来实行一些分析:)
认真学习的分割线
打打打打鸡血!!!
喝了一点点梅子酒,让我的创造力更加丰丰丰丰富!
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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。