python 入门语法复习(六)

本篇复习python对文件的操作和异常处理。

1、文件对象file_obj 操作

file_obj.read() :————以(‘r’)读取模式打开文件时,读取文件对象file_obj的全部内容
file_obj.readlines() : —–以(‘r’)读取模式打开文件时,依次读取文件对象file_obj的每行内容
file_obj.write(str) : —— 以(‘w’)写入模式打开文件时,该函数将字符串 str 写入文件对象 file_obj
                                         以(‘a’)附加模式打开文件时,字符串 str 写入文件对象 file_obj 的末尾
file_obj.split() : ———— 方法split()以空格为分隔符将字符串分拆成多个部分,并将这些部分返回到列表类型

文件操作更多注意点,请见我另一篇博客:
python 文件操作几个注意点

2、异常处理

python中,只写 try 不写 except 是不可以的
try - except - else 格式如下:

try:
    statement...
except:       # except后面可以加ZeroDivisionError、FileNotFoundError等特定异常,若不清楚会发生什么异常,不加也可
    statement...
else:         # 如果没有发生 except 异常,转而执行下面的语句
	statement...

如果想要发生异常时一声不吭不作处理,而是继续执行下面的语句,可以使用 pass语句

try:
    statement...
except:
    pass
else:
	statement...

3、存储数据

模块JSON能让你将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。
使用import JSON 即可导入JSON模块
通常使用文件拓展名.json来指出文件存储的数据为JSON格式

json.dump(contents, file_obj) : 将要存储的数据 contents 存入文件对象 file_obj
json.load(file_obj) : ————— 加载存储在 file_obj 中的信息

example 1: numberReader.py


import json

numbers = [1,2,3,5,6]

#### 试试存到json文件会怎么样 ####
filename = 'number.json'      #### 通常使用文件拓展名.json来指出文件存储的数据为JSON格式
# 试着写入json文件
with open(filename, 'w') as f:
    json.dump(numbers, f)
# 试着读取txt文件
with open(filename) as f2:
    num = json.load(f2)
print(num)

#### 试试存到txt文件会怎么样 ####
filename2 = 'digits.txt'
# 试着写入txt文件
try:
    with open(filename2, 'w') as f_obj:
        f_obj.write(numbers)
except:
   print("write() 参数内容只能是str,不能是list") 
# 试着读取txt文件
with open(filename, 'r') as f_o:
    text = f_o.read()
print(text)

输出结果如下:

[1, 2, 3, 5, 6]
write() 参数内容只能是str,不能是list
[1, 2, 3, 5, 6]

可以知道,txt文件不支持存储数据结构
事实上,如果不加上 try-except 结构,会出现如下报错:

TypeError: write() argument must be str, not list

example 2: username.py


import json

filename = 'username.json'
try:
    with open(filename) as f:
        username = json.load(f)
except FileNotFoundError:           ## 如果是第一次,filename文件还没有创建
    username = input("What is your name?\n")   # 打印该询问,并将得到的回答存储到username变量
    with open(filename, 'w') as f:
        json.dump(username, f)                 # 将得到的 username 存储到文件对象中
        print("We'll remember you when you come back, " + username + '!')
else:                               ## 如果不是第一次
    print("Welcome back, " + username + '!')

第一次运行输出结果如下:

What is your name?
xiaxiaoshux
We'll remember you when you come back, xiaxiaoshux!

现在已经创建了username文件存储我的用户名xiaxiaoshux
再次运行,输出结果如下:

Welcome back, xiaxiaoshux!

猜你喜欢

转载自blog.csdn.net/weixin_43469047/article/details/89739897
今日推荐