文件和异常
一.从文件中读取数据
1.读取整个文件
with open('test.txt') as file_object:
contents=file_object.read()
print(contents.rstrip())
(1)函数open():用于打开文件(任何方式使用文件之前,都必须先打开文件),该函数接受一个参数:要打开文件的名称(文件名称要用引号括起来),返回一个表示文件的对象(相当于文件类的一个实例)。Python会在当前执行文件所在的目录中查找文件。
(2)关键字with:使用该关键字就可以不用主动使用函数close()去关闭文件,Python会自动在合适的时候关闭文件,以避免使用close()函数时可能会发生错误。
- 注意:使用with,open()返回的对象只在with代码块内可用。
(3)关键字as:给open()返回的文件对象命名。
(4)方法read():对文件对象使用该方法,以字符串的形式返回文件中的全部内容。
- 注意:使用方法read()在到达文件末尾时会返回一个空字符串,显示出来就是一个空行,因而对字符串使用方法rstrip()可去除字符串末尾的空白。
2.文件路径
如果文件在当前运行程序所在目录,则可以使用相对文件路径。
with open(r'eec\test.txt') as file_object:
如果想读取任意位置的文件,则使用绝对文件路径。由于绝对文件路径相对较长,可以将其存储在变量中。
file_path= r'C:\Users\User\Desktop\eec\test.txt'
with open('eec\test.txt',encoding='utf-8') as file_object:
contents=file_object.read()
print(contents.rstrip())
注意:
(1)Windows系统有时候不能够解读文件路径中的斜杠,所以在确保文件路径中使用了反斜杠的同时,应该以原始字符串的方式指定路径,即在开头的单引号前加上r。
(2)如果要读取的文本文件中含有中文汉字,则需在open()函数中指定编码方式,即写入参数encoding=‘utf-8’,以确保能正确读取文件内容。
3.逐行读取
要以每一行方式读取文件,可对文件对象使用for循环。
filename=r'test.txt'
with open(filename) as file_object:
for line in file_object:
print(line.rstrip())