◎知识点
打开文件
读文件
◎脚本练习
▽ 打开文件
"""
把数据存储到文件中是数据存储的方式之一。
如何将数据写入文件,并将写入到文件中的数据读取出来呢?
读写文件之前,必须先打开文件。
内置函数open()用于打开文件,
第一个参数是文件的路径,必须要指定。既可以指定绝对路径,也可以指定相对路径。
第二个参数是文件的打开方式,默认值是'r',表示以只读方式打开。
其它参数都是带默认值的,可参考官方文档。
函数的返回值是一个文件对象,通过该对象就可以操作文件了,例如:读文件、写文件、关闭文件等。
"""
# file = open('myfile.txt')
# file = open('myfile.txt', 'r')
# file = open('myfile2.txt')
# file = open('myfile.txt', 'w')
# file = open('myfile2.txt', 'w')
# file = open('myfile.txt', 'a')
# file = open('myfile2.txt', 'a')
# file = open('myfile.txt', 'x')
# file = open('myfile2.txt', 'x')
# file = open('myfile.txt', 'r+')
# file = open('myfile2.txt', 'r+')▽ 读文件
"""
读文件之前,必须先打开文件。
可以调用内置函数open()并以只读方式或读写方式打开文件。返回的文件对象有三个用于读文件的方法:
1. read([size])
如果不传参数,读到文件尾。
如果传入参数,size用于指定字节数,
当指定的字节数小于读到文件尾的字节数时,读取指定的字节数;
当指定的字节数大于读到文件尾的字节数时,或当指定的字节数小于0,读到文件尾。
如果文件较大,调用read()一次性读取整个文件会导致内存占用较大,因此,最好多次调用read(size)。
指定的size不要超过默认缓冲区的大小,否则,可能并不能读取到指定的字节数。通过标准库中模块io
的属性DEFAULT_ BUFFER_ SIZE可以查看默认缓冲区的大小。
"""
"""
>>> import io
>>> io.DEFAULT_BUFFER_SIZE
8192
>>> file = open('myfile.txt')
>>> file.read()
'1234567890\nabcdefghijklmn\nopqrstuvwxyz'
>>> file.close() # 文件在使用完毕后必须要关闭
>>> file = open('myfile.txt')
>>> file.read(12)
'1234567890\na'
>>> file.read(30) # 因为没有关闭文件,所以继续读取
'bcdefghijklmn\nopqrstuvwxyz'
>>> file.close()
>>> file = open('myfile.txt')
>>> file.read(12)
'1234567890\na'
>>> file.read(-5)
'bcdefghijklmn\nopqrstuvwxyz'
>>> file.close()
"""
"""
2. readline([size])
如果不传参数,读到行尾。
如果传入参数,size用于指定字节数,
当指定的字节数小于读到行尾的字节数时,读取指定的字节数;
当指定的字节数大于读到行尾的字节数时,或当指定的字节数小于0,读到行尾。
总之,最多读到行尾。
"""
"""
>>> file = open('myfile.txt')
>>> file.readline()
'1234567890\n'
>>> file.readline(7)
'abcdefg'
>>> file.readline(10)
'hijklmn\n'
>>> file.readline(3)
'opq'
>>> file.readline(-5)
'rstuvwxyz'
>>> file.close()
"""
"""
3. readlines([size])
如果不传参数,读到文件尾,返回每一行组成的列表。
如果传入参数,size用于指定字节数,
当指定的字节数小于读到文件尾的字节数时,一直读取到最后一个字符所在行的行尾;
当指定的字节数大于读到文件尾的字节数时,或当指定的字节数小于0,读到文件尾。
如果文件较大,调用readlines()一次性读取整个文件会导致内存占用较大,因此,最好多次调用
readlines(size)。
指定的size不要超过默认缓冲区的大小。
"""
"""
>>> file = open('myfile.txt')
>>> file.readlines()
['1234567890\n', 'abcdefghijklmn\n', 'opqrstuvwxyz']
>>> file.close()
>>> file = open('myfile.txt')
>>> file.readlines(8)
['1234567890\n']
>>> file.readlines(50)
['abcdefghijklmn\n', 'opqrstuvwxyz']
>>> file.close()
>>> file = open('myfile.txt')
>>> file.readlines(8)
['1234567890\n']
>>> file.readlines(-5)
['abcdefghijklmn\n', 'opqrstuvwxyz']
>>> file.close()
"""
