记录之前看不明白的读取文件的方法。详见代码注释。
1、在当前执行的文件所在的目录中查找文件
with open('pi_digits.txt') as file_object:
contents=file_object.read()
print(contents.rstrip())
# 第一行:
# 函数open()接受一个参数:要打开的文件的名称。python会在当前执行的文件的所在目录中去查找指定的文件。open()返回一个表示文件的对象。
# 在这里,open('pi_digits.txt')返回一个表示文件pi_digits.txt的对象;python将这个对象存储在后面即将使用的变量中。
# 关键字with:在不再需要访问文件之后将其关闭。用close()也可以将文件手动关闭,但是确定关闭文件的恰当时机不是很容易确定。
# 第二行:
# 使用方法read()读取这个文件的全部内容,并将其作为一个长长的字符串存储在变量contents中。
# read()到达文件末尾时返回一个空字符串,将这个空字符串显示出来就是一个空行。
# 这样通过打印contents的值就可以将这个文本文件的全部内容显示出来。
# 第三行:
# 在print语句中使用rstrip():删除末尾的空行。(python方法rstrip()删除字符串末尾的空白)
2、通过文件路径查找文件
(1)相对路径
# 相对路径
with open('../text_files/filename.txt') as file_object:
contents=file_object.read()
print(contents)
(2)绝对路径(注意Windows的路径一般全部要用反斜杠“\”,Linux和OS X中类似于下面第二个代码段)
#绝对路径(Windows)
file_path='D:\PycharmProjects\python_work\text_files\filename.txt'
with open(file_path) as file_object:
contents=file_object.read()
print(contents)
#绝对路径(Linux、OS X)
file_path='/PycharmProjects/python_work/text_files/filename.txt'
with open(file_path) as file_object:
contents=file_object.read()
print(contents)
【注意】Windows系统有时候可以正确解读文件路径中的斜杆。但是我在使用绝对路径读取文件时出现了下图所示的错误:
【解决方法】首先,确定了文件路径中使用的都是反斜杠“\”。后面考虑到反斜杠在python中被视为转义标记,为了在Windows中确保万无一失,应该以原始字符串的方式指定路径,即在开头的单引号前加上r,如下图所示,解决了问题。
3、创建一个包含文件各行内容的列表
# 使用关键字with时,open()返回的文件对象只在with代码块内可用。
# 要在with代码块外访问文件的内容,可在with代码块内将文件的各行存储在一个列表中,并在with代码块外使用该列表。
filename='pi_digits.txt'
with open(filename) as file_object:
lines=file_object.readlines()
for line in lines:
print(line.rstrip())