10.1 :从文件中读取数据
使用文本文件中的信息,需要将信息读取到内存中。为此,可一次性读取文件的全部内容,也可以以每次一行的方式逐步读取。
10.1.1 : 读取整个文件
函数open():接受一个参数:要打开的文件的名称;
关键字with在不再需要访问文件后将其关闭;
read():读取这个文件的全部内容,并将其作为一个长长字符串赋给变量contents;
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
使用rstrip()删除字符串末尾的空白;
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents.rstrip())
10.1.2:文件路径
相对稳健路径让Python到指定的位置去查找,而该位置相对于当前运行的程序所在目录的;
with open('text_files/pi_digits.txt') as file_object:
contents = file_object.read()
print(contents.rstrip())
代码让python到文件夹python_work下的文件夹text_files中去查指定的.txt文件;
注意: 显示文件路径时,Windows系统使用反斜杠 ( \ )而不是斜杠( / ),但在代码中仍然可以使用斜杠。
10.1.3 :逐行读取
要以每次一行的方式检查文件,可对文件对使用for循环:
filename = 'pi_digits.txt'
with open(filename) as file_object:
for line in file_object:
print(line)
使用rstrip():删除多余的空白行
filename = 'pi_digits.txt'
with open(filename) as file_object:
for line in file_object:
print(line.rstrip())
10.1.4 :创建一个包含文件各行内容的列表
例子:在with代码块中将文件pi_digits.txt的各行存储在一个列表中,再再with代码块外打印:
filename = 'pi_digits.txt'
with open(filename) as file_object:
# readlines:从文件中读取每一行,并将其存储在一个列表中
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
10.1.5 :使用文件的内容
将文件读取到内存中后,就能以任何方式使用这些数据了;
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
# 创建一个变量pi_string,用于指向圆周率的值
pi_string = ''
# 使用一个循环将各行加入pi_string,并删除每行末尾的换行符;
for line in lines:
pi_string += line.rstrip()
print(pi_string)
print(len(pi_string))
使用strip 删除空格
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
# 创建一个变量pi_string,用于指向圆周率的值
pi_string = ''
# 使用一个循环将各行加入pi_string,并删除每行末尾的换行符;
for line in lines:
pi_string += line.strip()
print(pi_string)
print(len(pi_string))
10.1.6 :包含一百万位的大型文件
只打印到小数点后50位,以免终端为显示全部1 000 000位而不断滚动:
filename = 'pi_million_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
# 创建一个变量pi_string,用于指向圆周率的值
pi_string = ''
# 使用一个循环将各行加入pi_string,并删除每行末尾的换行符;
for line in lines:
pi_string += line.strip()
print(f"