文件
输出文件中的内容
- 在项目代码同路径下创建一个pi_digits文件
3.1415926535
8979323846
- 在fileDemo0.py中将其打开,并输出
#用函数open()打开文件,并将对象赋给file,对于open中的文件路径,可以使用相对路径也可以使用绝对路径
with open("pi_digits") as file:
#用read()读取文件的全部内容
contents=file.read()
print(contents)
效果:
逐行读取
with open("pi_digits") as files:
for line in files:
print(line)
效果:
- 在文件中,每行的末尾都有一个看不见的换行符,而函数print()也会加上一个换行符,因此每行末尾都有两个换行符,一个来自文件,一个来自print()函数,可以用rstrip()消除多余空行
创建一个包含文件内各行内容的列表
- 使用关键字with的时候,open()返回的文件对象只在with代码块内可以使用。如果要在with代码块外访问文件的内容,可在with代码块内将文件的各行存储在一个列表中
#创建一个包含文件各行内容的列表
with open("pi_digits") as file_object:
lines=file_object.readlines()
for line in lines:
print(line.rstrip())
效果:
读取文件中的内容并使用(默认为字符串,可以用int()或者float()转换成整数,或者浮点数)
#使用文件中的内容
pi_string=""
for line in lines:
pi_string += line.strip()
print(pi_string)
#计算pi×2的平方
print(float(pi_string)*2**2)
效果:
写入文件
- 打开文件时,可以指定读取模式”r",写入模式“w”,附加模式“a”(将写入的信息加入原有文件),或读写模式“r+”,如果省略,默认以只读模式打开文件
- 如果要写入的文件不存在,则会自动创建,如果存在,则会覆盖!!!
#写入文件
filename="hello.txt"
with open(filename,"w") as file_object:
file_object.write("hello,world!")
效果:
- 函数write()写入文件是,不会自动在文本末尾添加换行符
异常(使用try-catch代码块,即使出现异常,程序也能继续运行)
处理ZeroDivisionError异常
#定义一个除法方法
def div(numerator,denominator):
return numerator/denominator
print("give me two numbers,and i will divide them")
print("enter q to end this program")
while True:
numerator=input("numerator:")
if numerator=="q":
break
denominator=input("denominator:")
if denominator=="q":
break
try:
result=div(int(numerator),int(denominator))
#处理ZeroDivisionError异常
except ZeroDivisionError:
print("u can not divide by 0")
else:
print(result)
效果:
处理
- 使用open()函数时,填入不存在的文件名
try:
with open("opencv.txt",encoding="utf-8") as file_object:
content=file_object.read()
except FileNotFoundError:
print("this file does not exist")
效果: