如何理解文件操作与异常模块

发布时间:2021-10-12 10:15:00 作者:iii
来源:亿速云 阅读:189

这篇文章主要讲解了“如何理解文件操作与异常模块”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解文件操作与异常模块”吧!

如何理解文件操作与异常模块

文件操作

我们的程序可以读取文件,也可以写入文件。默认情况下,文件以读模式('r')打开,但也可以以写模式('w')和附加模式('a')打开。

你的程序可以从文件中读取信息,也可以向文件中写入数据。从文件中读取可以让你处理各种各样的信息;写入文件允许用户在下次运行你的程序时重新开始。您可以将文本写入文件,还可以将Python结构(如列表)存储在数据文件中。

读取文件

要从文件中读取,程序需要打开文件,然后读取文件的内容。您可以一次读取文件的全部内容,也可以逐行读取文件。with语句确保当程序完成对文件的访问后,文件被正确地关闭。

filename = 'siddhartha.txt' with open(filename) as f_obj:     contents = f_obj.read() print(contents)

从文件中读取的每一行在行尾都有一个换行符,而print函数会添加它自己的换行符。rstrip()方法消除了打印到终端时会产生的额外空白行。

filename = 'siddhartha.txt' with open(filename) as f_obj:     for line in f_obj: print(line.rstrip())
filename = 'siddhartha.txt' with open(filename) as f_obj:     lines = f_obj.readlines() for line in lines:     print(line.rstrip())

将'w'参数传递给open()告诉Python你想写入文件。小心:如果文件已经存在,这将删除文件的内容。

传递'a'参数告诉Python你想要添加到一个现有文件的末尾。

filename = 'programming.txt' with open(filename, 'w') as f:     f.write("I love programming!")
filename = 'programming.txt' with open(filename, 'w') as f:     f.write("I love programming!\n")     f.write("I love creating new games.\n")
filename = 'programming.txt' with open(filename, 'a') as f:     f.write("I also love working with data.\n")     f.write("I love making apps as well.\n")

文件路径

当Python运行open()函数时,它会在存储正在执行的程序的同一目录中查找文件。可以使用相对路径从子文件夹中打开文件。也可以使用绝对路径来打开系统中的任何文件。

f_path = "text_files/alice.txt" with open(f_path) as f_obj:     lines = f_obj.readlines() for line in lines:     print(line.rstrip())
f_path = "/home/ehmatthes/books/alice.txt" with open(f_path) as f_obj:     lines = f_obj.readlines()

Windows有时会错误地解释正斜杠。如果遇到这种情况,请在文件路径中使用反斜杠。

f_path = r"C:\Users\ehmatthes\books\alice.txt" with open(f_path) as f_obj:     lines = f_obj.readlines()

Except异常模块

异常是帮助程序以适当方式响应错误的特殊对象。例如,如果程序试图打开一个不存在的文件,可以使用异常来显示一个信息丰富的错误消息,而不是使程序崩溃。

将可能导致错误的代码放置在try块中。响应错误时应该运行的代码位于except块中。只有在try块成功时才应该运行的代码被放入else块。

prompt = "How many tickets do you need? " num_tickets = input(prompt) try:     num_tickets = int(num_tickets) except ValueError:     print("Please try again.") else:     print("Your tickets are printing.")

try-except代码块

try:     print(5/0) except ZeroDivisionError:     print("You can't divide by zero!")
f_name = 'siddhartha.txt' try:     with open(f_name) as f_obj:         lines = f_obj.readlines() except FileNotFoundError:     msg = "Can't find file {0}.".format(f_name)     print(msg)

在编写代码时,很难知道要处理哪种异常。尝试编写没有try块的代码,并让它生成一个错误。回溯将告诉您程序需要处理哪种异常。

else代码块

try块应该只包含可能导致错误的代码。任何依赖于try块成功运行的代码都应该放在else块中。

print("Enter two numbers. I'll divide them.") x = input("First number: ") y = input("Second number: ") try:     result = int(x) / int(y) except ZeroDivisionError:     print("You can't divide by zero!") else:    print(result)

如果没有下面示例中的except块,如果用户试图除零,程序将崩溃。正如所写的,它将优雅地处理错误并继续运行。

# 一个简单的除法计算器。 print("Enter two numbers. I'll divide them.") print("Enter 'q' to quit.") while True:     x = input("\nFirst number: ")     if x == 'q':         break     y = input("Second number: ")     if y == 'q': break     try:         result = int(x) / int(y)     except ZeroDivisionError:         print("You can't divide by zero!")     else:         print(result)

默默地失败

有时希望程序在遇到错误时继续运行,而不向用户报告错误。在else块中使用pass语句可以做到这一点。

f_names = ['alice.txt', 'siddhartha.txt',            'moby_dick.txt', 'little_women.txt'] for f_name in f_names:     # 报告找到的每个文件的长度。     try:         with open(f_name) as f_obj:             lines = f_obj.readlines()     except FileNotFoundError:         # 继续看下一个文件。         pass    else:         num_lines = len(lines)         msg = "{0} has {1} lines.".format(             f_name, num_lines)         print(msg)

避免空的except块

异常处理代码应该捕获在程序执行期间预期发生的特定异常。空的except块将捕获所有异常,包括在强制关闭程序时可能需要的键盘中断和系统退出。

如果你想使用try块,但又不确定要捕获哪个异常,那么使用exception。它将捕获大多数异常,但仍然允许您故意中断程序。

try:    # Do something except:    pass
try:     # Do something except Exception:     pass
try:     # Do something except Exception as e:     print(e, type(e))

使用json存储数据

json模块允许您将简单的Python数据结构转储到一个文件中,并在程序下次运行时从该文件加载数据。JSON数据格式不是特定于Python的,所以你也可以与使用其他语言的人共享这类数据。

在处理存储的数据时,了解如何管理异常非常重要。在处理数据之前,通常希望确保试图加载的数据存在。

# 存储一些数字。 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)
import json f_name = 'numbers.json' try:     with open(f_name) as f_obj:         numbers = json.load(f_obj) except FileNotFoundError:     msg = "Can’t find {0}.".format(f_name)     print(msg) else:     print(numbers)

决定报告哪些错误

编写良好、经过适当测试的代码不太容易出现内部错误,比如语法或逻辑错误。但是,每当你的程序依赖于诸如用户输入或文件存在之类的外部因素时,就有可能引发异常。

感谢各位的阅读,以上就是“如何理解文件操作与异常模块”的内容了,经过本文的学习后,相信大家对如何理解文件操作与异常模块这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. python学习之文件操作及异常处理
  2. 四、文件操作与处理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python

上一篇:如何使用vbs解决处理TXT文本数据相关问题

下一篇:VBS如何下载文件

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》