【读取整个文件】

记录之前看不明白的读取文件的方法。详见代码注释。

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系统有时候可以正确解读文件路径中的斜杆。但是我在使用绝对路径读取文件时出现了下图所示的错误:

【读取整个文件】_第1张图片

【解决方法】首先,确定了文件路径中使用的都是反斜杠“\”。后面考虑到反斜杠在python中被视为转义标记,为了在Windows中确保万无一失,应该以原始字符串的方式指定路径,即在开头的单引号前加上r,如下图所示,解决了问题。

【读取整个文件】_第2张图片

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())

你可能感兴趣的:(Python基础,python)