读取文件
1.按字节或字符读取
文件对象提供了read()方法来按字节或字符读取文件内容。如果使用了b模式,则每次读取一个字节,如果不使用b模式,则每次读取一个字符,在调用该方法时可传入一个整数作为参数,用于指定最多读取多少个字节或字符。例如:

python按字节读取串口 python按字节读取文件_python

使用close()函数关闭文件,可防止资源泄露。如果再调用read()函数时不传入参数,则默认读取全部文件内容。

如果想更加安全的关闭文件,推荐将close()函数放在finally块中执行。例如:

python按字节读取串口 python按字节读取文件_python按字节读取串口_02

在windows平台,使用open()函数打开文件默认使用GBK字符集,因此,上面程序读取的a.txt时必须使用GBK字符集保存。如果想要读取的文件所使用的字符集和当前操作系统的字符集不匹配,有两种解决方式:

  1. 使用二进制模式读取,用bytes的decode()方法恢复成字符串
  2. 利用open()函数来打开文件时通过encoding参数指定字符集

python按字节读取串口 python按字节读取文件_python按字节读取串口_03


python按字节读取串口 python按字节读取文件_python_04

2.按行读取
文本对象提供了两个方法来按行读取:

  1. readline([n]):读取一行内容,如果指定了参数n,则只读此行内容的n个字符
  2. reanlines:读取文件内所有行

python按字节读取串口 python按字节读取文件_Python_05


python按字节读取串口 python按字节读取文件_读取文件_06

3.使用fileinput读取多个输入流
fileinput模块提供了fileinput.input(file = None, …)函数把多个输入流合并在一起,该函数返回一个FileInput对象。当程序使用上面函数创建了一个FileInput对象后即可通过for-in循环来遍历文件的每一行。
但fileinput也存在一个缺陷,在创建FileInput对象时不能指定字符集,因此他独憔悴的文件的字符集必须与操作系统默认的字符集保持一致。如果是纯英文的文本内容,则不存在字符集问题。

python按字节读取串口 python按字节读取文件_python按字节读取串口_07

4.管道输入

sys.stdin是一个标准输入流,Python程序可以通过sys.stdin来读取键盘输入。但在某些时候,Python程序希望读取的输入不是来自用户,而是来自某个命令,此时就需要使用管道了。

管道的作用在于:将前一个命令的输出,当成下一个命令的输入。例如:

python按字节读取串口 python按字节读取文件_打开文件_08

5.with语句
Python提供了with语句来管理资源关闭,可以把打开的文件放在with语句中,这样with语句就会帮我们自动关闭文件。例如:

with open('a.txt', 'r', True, 'gb2312') as f:
    for line in f:
        print(line, end = '')

程序也可使用with语句来处理通过fileinput.input合并的对个文件。例如:

import fileinput

with fileinput.input(files = ('a.txt', 'b.txt')) as f:
    for line in f:
        print(line, end = '')

6.使用linecache随机读取指定行
linecache模块允许从Python源文件中随机读取指定行,并在内部使用缓存优化存储。使用linecache模块也可以读取其他文件,只要该文件使用了UTF-8字符集存储。例如:

python按字节读取串口 python按字节读取文件_python按字节读取串口_09