文件操作与异常处理
从文件中读取数据
读取整个文件
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents.rstrip())
文件路径( 相对、绝对 )
file_path = 'E:\my_test\文件.txt'
with open(file_path) as file_object:
contents = file_object.read()
print(contents)
逐行读取文件内容
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:
lines = file_object.readlines()
for line in lines:
print(line.rstrip())
使用文件内容
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(pi_string)
print(len(pi_string))
注意:读取文本文件时,Python将其中的所有文本都解读为字符串。如果你读取的是数字,并要将其作为数值使用,就必须使用函数**int()**将其转换为整数,或使用函数float()将其转换为浮点数
小应用
filename = 'pi_digits.txt'
with open(filename) as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
age = input("Enter your age:")
if age in pi_string:
print("Your age is in the list!")
else:
print("There is no your name included.")
该段代码由三个模块构成,第一个模块负责文件的连接和定义,第二块是定义使用的字符串,第三块是人机交互模块
写入文件
写入空文件
filename = 'programming.txt'
with open(filename,'w') as file_object:
file_object.write("I love programming.")
注:
? 1.打开文件时,可指定读取模式(‘r’)、写入模式(‘w’)、附加模 式(‘a’)或让你能够读取和写入文件的模式(‘r+’)。如果你省 略了模式实参,Python将以默认的只读模式打开文件。
? 2.Python只能将字符串写入文本文件。要将数值数据存储到文本文 件中,必须先使用函数str()将其转换为字符串格式
写入多行
filename = 'programming.txt'
with open(filename,'w') as file_object:
file_object.write('I love programming.\n')
file_object.write('I love creating new games.\n')
附加到文件
filename = 'programming.txt'
with open(filename,'a') as file_object:
file_object.write('I also love finding meaning in large datasets.\n')
file_object.write('I love creating apps that can run in browser.\n')
异常
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jyYulGQp-1631461388300)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\image-20210911174743325.png)]
使用异常避免崩溃!!!
使用 try-except 代码块
try:
print(5 / 0)
except ZeroDivisionError:
print("You can't divide by 0 !")
除法计算器
print("给我两个数,我将它俩相除")
print("输入‘q’退出程序。")
while True:
first_number = input("\n输入第一个数字:")
if first_number == 'q':
break
second_number = input("\n输入第二个数字:")
try:
answer = int(first_number) / int(second_number)
except ZeroDivisionError:
print("分母为零无意义!!!")
else:
print(answer)
try-except-else代码块的工作原理大致如下:
? Python尝试执行try代码块中的代码;只有可能引发异常的代码才需要放在try语句中。有时候,有一些仅在try代码块成功执行时才需要运行的代码;这些代码应放在else代码块中。except代码块告诉Python,如果它尝试运行try代码块中的代码时引发了指定的异常,该怎么办
pass ——失败时一声不吭
JSON——存储数据的利器
import json
numbers = [2,3,5,7,11,13]
filename = 'numbers.json'
with open(filename,'w') as f_obj:
json.dump(numbers,f_obj)
import json
filename = 'numbers.json'
with open(filename) as f_obj:
numbers = json.load(f_obj)
print(numbers)
|