Python中的文件和异常

目录

1 文件

1.1 读文件

1.2 写文件

1.3 文件的其他操作

1.4 存储数据(JSON模块)

2 异常

2.1 try-except-else代码块


1 文件

1.1 读文件

以下显示python中文件读取操作的代码:

with open('data.txt') as file_object:
    contents = file_object.read()

这里有几个关键点:

1. open()函数:这里open函数负责打开文件,而传入的参数即为要打开文件的路径;

2. 关键字 ' with ' :这里的with负责在不再需要访问文件后将其自动关闭;

3. read()函数:read函数负责读取这个文件的全部内容(read()到达文件末尾时会返回一个空的字符串,打印的时候就显示为一个空行,若要删除该空行,可在print()中使用rstrip()函数

1.2 写文件

以下显示python中文件写操作的代码:

with open(filename, 'w') as file_object:
    file_object.write("I love programming.")

这里将文本写入文件时,我们需要在调用open()时提供另一个参数,以告诉python你要进行的操作。这里的操作包括:

1. 'w' :写入模式

2. 'r' : 读取模式

3. 'a' : 附加模式

4. 'r+' : 读写模式

* 其中需要注意的是使用 'w' 写入模式时,若指定的文件已存在,python会在返回文件对象前清空该文件的内容 

* 'w' 和 'a'模式都不会自动分行,所以每次我们进行写文件内容时需要自己加上 '\n'

1.3 文件的其他操作

1. 创建一个包含文件各行内容的列表

with open(filepath) as file_object:
    lines = file_object.readlines()

for line in lines:
    print(line.rstrip())

这里的readline()方法负责从文件中读取每一行并将其存储在一个列表中

2. 检查字符串是否包含在文件中

--snip--
for line in lines:
    pi_string += line.rstrip()

birthday = input("Enter your birthday, in the form mmddyy: ")
if birthday in pi_string:
    print('Your birthday is in the file')
else:
    print('Your birthday is not in the file')

这里我们先读取了文件的内容,然后再通过一个if判断语句,来检查字符串是否包含在文件中

1.4 存储数据(JSON模块)

json(JavaScript Object Notation)模块能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。同时,json不仅可以在python程序间分享数据,它也可让你以JSON格式存储的数据域使用其他编程语言的人分享。

1. json.dump() 和 json.load()

下面我们根据两个例子来理解这两个方法:

例1:

import json

numbers = [2, 3, 5, 7, 11, 13]

filename = 'numbers.json'
with open(filename, 'w') as f:
    json.dump(numbers, f)

这里我们先导入模块json,再创建一个数字列表,然后在下面指定我们需要将数字列表存储到的文件名(以.json来指出文件存储的数据为JSON格式),最后通过json.dump()函数将数字列表存储到文件numbers.json中。 

例2:

import json

filename = 'numbers.json'
with open(filename) as f:
    numbers = json.load(f)

print(numbers)

这里我们导入模块json后,先指定需读取的文件名,然后通过json.load()来加载存储在numbers.json中的信息,并将其赋给变量numbers。

2 异常

2.1 try-except-else代码块

下面我们给出在处理ZeroDivisionError异常的例子:

try:
    answer = int(first_number) / int(second_number)
except ZeroDivisionError:
    print("You can't divide by zero!") 
else:
    print(answer)

在本例中,如果try代码块中的代码引发了ZeroDivisionError异常,则Python会查找指出了该怎么办的except代码块,并运行其中的代码。这样,用户看到的是一条友好的错误信息,而不是traceback。同时,else代码块负责运行try代码块成功执行的代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值