详解Python中的异常和文件读写
异常处理
在Python中,异常处理是一种常见的技术,可以对程序出现的异常情况做出响应。当程序发生异常时,如果没有进行处理,程序将会崩溃并退出,而使用异常处理技术可以避免这种情况的发生。
try-except语句
经常使用的异常处理方案之一是使用try-except语句。try语句块中包含要执行的代码,当代码主动抛出异常时,会把控制流转移到except语句块,从而实现错误处理。
下面是一个示例:
try:
# 执行正常的代码
f = open('file.txt', 'r')
result = f.read()
print(result)
f.close()
except FileNotFoundError:
# 处理文件不存在的情况
print("File not found.")
except Exception as e:
# 处理其他异常情况
print(e)
在这个例子中,首先尝试打开名为”file.txt”的文件并读取它的内容,如果文件不存在,则会抛出FileNotFoundError异常。如果发生其他异常情况,则可以通过except语句块来处理这种情况。
raise语句
除了Python本身会抛出一些异常外,我们也可以使用raise语句来主动抛出异常。这对于自定义异常和错误处理非常有用。
下面是一个示例:
try:
x = int(input("请输入一个整数: "))
if x < 0:
raise ValueError("整数必须大于等于0")
print("输入的整数是:", x)
except Exception as e:
print(e)
在这个例子中,程序试图从用户输入中获取一个整数,如果用户输入一个小于0的整数,将会抛出一个ValueError异常。
文件读写
Python中内置了用于处理文件的函数和模块,允许我们读取和写入文件。
打开和关闭文件
在Python中打开文件后,必须关闭它。为了避免忘记关闭文件,我们可以使用上下文管理器来打开文件,这样在代码块结束时,文件将自动关闭。
下面是一个示例:
with open('file.txt', 'r') as f:
# 执行读取文件内容的操作
result = f.read()
print(result)
在这个例子中,使用open函数打开名为”file.txt”的文件并读取它的内容。当代码块结束时,文件将自动关闭。
读取文件
在Python中,有几种读取文件的方式,包括:
- read():返回一个包含整个文件内容的字符串
- readline():返回文件中的一行
- readlines():返回一个包含文件中所有行的列表
下面是一个示例:
with open('file.txt') as f:
contents = f.read()
print(contents)
在这个例子中,使用open函数打开名为”file.txt”的文件并读取它的内容。使用read()方法读取整个文件内容,并打印输出。
写入文件
在Python中,也有几种写入文件的方式,包括:
- write():向文件中写入字符串
- writelines():向文件中写入多行字符串
下面是一个示例:
with open('file1.txt', 'w') as f:
f.write("Hello, World!\n")
f.write("Welcome to Python!\n")
f.write("See you again!")
在这个例子中,使用open函数打开名为”file1.txt”的文件并写入三行内容。
总结
异常处理和文件读写是Python编程中非常基本的技术。通过掌握这些技术,我们可以更好地处理常见的错误情况,并实现读取和写入文件的操作。以上是详解Python中的异常和文件读写的完整攻略。
另外,以下是异常和文件读写的两个示例,分别说明异常和文件读写的案例实现:
示例1:异常处理
try:
int('a')
except ValueError:
print("值错误!")
except Exception as e:
print(e)
else:
print("无异常!")
finally:
print("一定会执行的代码块!")
在这个示例中,尝试把一个字符串类型的变量转换为整数类型,由于字符串’a’无法转换成整数,程序会抛出一个ValueError异常。由于我们在try语句块中使用了except ValueError语句块,所以程序会通过这个语句块抓取这个异常,并输出”值错误!”。在try语句块结束后,else块不会被执行,而不论是否发生异常,finally块中的内容都会被执行。
示例2:文件读写
with open('file1.txt', 'r') as f:
for line in f:
print(line.strip())
在这个示例中,使用with语句打开名为”file1.txt”的文件,并使用for循环遍历文件中的每一行内容,并输出每一行的内容。注意,每一行输出时会带有一个换行符,所以需要使用strip()函数来去掉换行符。