第十章 文件和异常
一、 读取文件
1、使用函数open()接受一个文件名的参数,在当前代码文件所在的目录查找指定的文件
2、文件的相对路径 让Python到指定的位置去查找,该位置相对于当前运行的程序所在目录的
3、文件的绝对路径 让Python到指定的绝对位置去查找
4、使用for循环进行逐行读取
5、创建一个包含文件各行内容的列表,就可在with代码块外访问列表
6、读取文件内容后使用文件的内容
7、读取一百万位长度的大型文件中的部分内容以及获取整个长度大小
8、查询文件内容中是否包含特定的值(以查询圆周率中是否包含生日为例)**
二、写入文件
1、将一行内容写入空文件
2、将多行内容写入文件
3、将内容附加写入文件末尾**
三、异常
1、处理ZeroDivisionError异常
2、使用异常避免崩溃
3、处理FileNotFoundError异常
4、计算txt文本包含多少单词使用split()方法
5、计算多个txt文本包含多少单词for循环文本列表
6、捕获到异常不提示时使用pass**
四、存储文件
1、使用将数据存储到json文件的json.dump()方法和从json文件加载数据的json.load()方法
2、保存和读取用户生成的数据
3、重构**
###################
10.1 读取文件
10.1.1 函数open()接受一个文件名的参数,在当前代码文件所在的目录查找指定的文件
with open('pi_digits.txt') as file_object:
#使用read方法读取这个文件的全部内容,并存储在变量中
contents = file_object.read()
#打印变量的值,使用rstrip()去空格
print(contents.rstrip())
#输出结果:
3.1415926535
8979323846
2643383279
#关键字with 在不再需要访问文件后将其关闭,也可以通过open()和close()来打开和关闭文件,如果程序有bug,导致close()语句未执行,文件将不会关闭
################
10.1.2 相对路径 让Python到指定的位置去查找,该位置相对于当前运行的程序所在目录的
#在代码文件目录新建一个test_file文件夹,然后放入文件(Windows中使用反斜杠)
with open('test_file\pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
#输出结果:
3.1415926
897932
2643
##################
10.1.3 绝对路径
#运行时提示路径不对。如果路径在Windows中可以访问,可以在开头添加r(如果后面的字符串有很多需要转义的符号时)
file_path = r'F:\PythonStudy\test_file\pi_digits.txt'
with open(file_path) as file_object:
contents = file_object.read()
print(contents)
#输出结果:
3.1415926
897932
2643
#################
10.1.4 逐行读取
#将文件名称存储在变量中
file_path = 'pi_digits.txt'
with open(file_path) as file_object:
#使用循环来遍历文件中的每一行
for file_line in file_object:
print(file_line)
#输出结果:
3.1415926535
8979323846
2643383279
#文件的换行符和print语句的换行符导致多余的空白行,可调用rstrip()去掉
################
10.1.5 创建一个包含文件各行内容的列表,就可在with代码块外访问列表
file_name = 'pi_digits.txt'
with open(file_name) as file_object:
#使用readlines()读取每一行并存储在列表中
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
#输出结果:
3.1415926535
8979323846
2643383279
##################
10.1.6 使用文件的内容
file_name = 'pi_digits.txt'
with open(file_name) as file_object:
lines = file_object.readlines()
#创建一个变量用于存储圆周率的值
pi_string = ''
#使用for循环将各行都加入pi_str