文件读写
使用with语句是个好习惯
读文件的几种方式:
- read:一次性读取文件的全部内容
- read(size):每次最多读取size个字节的内容
- readline:每次读取一行内容
- readlines:一次读取所有内容并按行返回list(可用于for循环)
file-like Object
不要求从特定的类继承,只要写个read方法即可
stringIO:在内存中创建file-like对象,常做临时缓冲区
- 读取二进制文件:’rb’
- 字符编码:encoding=”关键字
注意:遇到UnicodeDecodeError问题时,添加errors=’ignore’关键字 - 写文件:’w’/’wb’:直接覆盖;’a’:追加模式
StringIO和BytesIO
目前感觉这两样没怎么应用过,毕竟也不是很难的东西,需要用到的时候再说呗,嘻嘻
StringIO在内存中读写str(注意是str哦)
>>> from io import StringIO
>>> f = StringIO()
>>> f.write('hello')
5
>>> f.write(' ')
1
>>> f.write('world!')
6
>>> print(f.getvalue())
hello world!
BytesIO在内存中读写二进制数据
>>> from io import BytesIO
>>> f = BytesIO()
>>> f.write('中文'.encode('utf-8'))
6
>>> print(f.getvalue())
b'\xe4\xb8\xad\xe6\x96\x87'
操作文件及目录
这一部分的内容,怎么说呢,有点类似与linux,我主要还是想通过例子,来记住这些语句,其中这些语句主要围绕在os与os.path中
# 1、查看当前目录的绝对路径:
>>> os.path.abspath('.')
'/Users/michael'
# 2、在某个目录下创建一个新目录,首先把新目录的完整路径表示出来:
>>> os.path.join('/Users/michael', 'testdir')
'/Users/michael/testdir'
# 3、然后创建一个目录:
>>> os.mkdir('/Users/michael/testdir')
# 4、删掉一个目录:
>>> os.rmdir('/Users/michael/testdir')
# 5、拆分路径
>>> os.path.split('/Users/michael/testdir/file.txt')
('/Users/michael/testdir', 'file.txt')
# 6、直接获得文件扩展名
>>> os.path.splitext('/path/to/file.txt')
('/path/to/file', '.txt')
# 7、对文件重命名:
>>> os.rename('test.txt', 'test.py')
# 8、删掉文件:
>>> os.remove('test.py')
序列化
序列化这个名字,听起来很陌生,但你一定使用过,其含义是:
把变量从内存中变成可存储或传输的过程称为序列化
pickle模块(python独有)
- 序列化
- pickle.dumps():将任意对象序列化为一个bytes,然后在写入文件
- pickle.dump():直接把对象序列化为一个file-like object
- 反序列化
- pickle.loads():从磁盘读到内存时,先将内容读到bytes
- pickle.load():直接从file-like object中凡序列出对象
json
json方便在不同编程语言之间传递对象,是数据标准格式,比xml速度快
- python对象–>json
- dumps 返回一个str
- dump 写入一个file-like Object
- python对象<–json
- loads
- load
这一块内容不多,不难,但是比较琐碎,都是以往编程没有注意到的细节,所以,时常翻看,在迭代记忆中越来越牢固