廖雪峰python学习笔记之IO编程

文件读写

使用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

这一块内容不多,不难,但是比较琐碎,都是以往编程没有注意到的细节,所以,时常翻看,在迭代记忆中越来越牢固

猜你喜欢

转载自blog.csdn.net/alicelmx/article/details/80305987