Python | 文件操作和异常处理

简介: Python | 文件操作和异常处理

f8f64eab26d040c896b5f8dea4a45cb9.jpg

一、文件操作


1.1 打开和关闭文件


Python open() 方法用于打开一个文件,并返回文件对象。

在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。


打开已存在的文件:

使用r打开可读,写报错io.UnsupportedOperation: not writable

使用w打开可写,读报错io.UnsupportedOperation: not readable

打开不存在的文件

使用r打开报错FileNotFoundError: [Errno 2] No such file or directory: ‘xxx.xxx’

使用w打开会新建文件


下面通过代码分别演示上面的示例。

a79f499f044f430488e08aa7761cb039.png

# 1.1 用只读模式打开已存在的文件
file = open("a.txt", "r") # a.txt文件内容是123
content = file.readline()  # 读不会报错
print(content)
file.write("321")  # 写会报错 io.UnsupportedOperation: not writable
file.close()


508b96cbe6fa466898ba289d7502ecc4.png

# 1.2 用只写模式打开已存在的文件
file = open("a.txt","w")
file.write("123") # 写不会报错
content = file.readline() # 读会报错 io.UnsupportedOperation: not readable
file.close()

18f64de55e554df9b2febebb1bfcc10c.png

# 2.1 用只读模式打开不存在的文件
file = open("b.txt","r") # 报错 FileNotFoundError: [Errno 2] No such file or directory: 'b.txt'
file.close()

63a55ede6c3446f1b07f1202b9eb07e3.png

# 2.2 用只写模式打开不存在的文件
file = open("b.txt","w")
file.write("123")
file.close()

9994b5333bf342edbc7883ccd455172d.png


89781d293be846a5838cef51169b0821.png


Python close() 方法用于关闭文件。关闭后文件不能再进行读写操作。

文件IO要及时关闭,防止其他应用程序无法使用这个文件。


1.2 读写文件


  • read()方法读取: 读取指定个数数据,读完后指针移动到最后读取的数据后
  • readline()方法读取:默认读取一行,也可以读取指定数据
  • readlines()方法读取:读取文件的全部数据

a.txt文件里的内容如下:


fe8865bd8926401597d7c0aa3642c167.png

依次使用上面三种方法读取:

# 1.read()
print("1.使用read方法读取文件:")
f = open("a.txt", "r")
content = f.read(5)  # 读5个字符,读完后光表移到了第五个字符后面
print(content)
content = f.read(5)  # 从第5个字符开始读
print(content)
f.close()
print()
# 2.readline() 读取一行,或读取指定个数的字符
print("2.使用readline方法读取文件:")
f = open("a.txt", "r")
primary = f.readline()
print(primary, end="")
primary = f.readline(5)  # 读取5个字符
print(primary)
f.close()
print()
# 3.readlines() # 以列表的形式,每一行的数据作为一个列表元素,读取全部文件
print("3.使用readlines方法读取文件:")
f = open("a.txt", "r")
content = f.readlines()
print(content)
i = 1
for con in content:
    print("第%d个元素:%s" % (i, con), end="")
    i += 1
f.close()


bc5d6e1b39274b298df87cb09de5a580.png


二、异常处理

2.1 异常处理格式


Python 有两种错误很容易辨认:语法错误和异常。

语法错误是在程序允许前被Python语法分析器检测出来的。

运行期检测到的错误被称为异常。

根据上面的例题,用只读 r 打开一个不存在的文件是将发生FileNotFoundError

下面通过处理这个异常来演示Python异常处理的格式。

(1)处理单个异常

# 用只读模式打开不存在的文件,处理异常
try:
    file = open("b.txt","r") # 报错 FileNotFoundError: [Errno 2] No such file or directory: 'b.txt'
    file.close()
except FileNotFoundError:
    print("出错了")
    pass


df5c3f0d6ff7404dbb48ecbccf181fd7.png

(2)处理多个异常

try:
    print(name)  # name未定义将发生nameError
    f = open("b.txt", "r")  # b.txt不存在将发生FileNotFoundError
except (NameError, FileNotFoundError) as ex:  # 定义异常对象ex用于获取异常信息
    print(ex)
    pass


b3f152f5256e4e6e9535142585626623.png

(3)try——except——finally使用

先看下面的代码:

try:
    f = open("b.txt","r") # FileNotFoundError
except FileNotFoundError as ex:
    print(ex) # 打印异常信息
finally:
    f.close()

代码中的 f 是局部变量,finally语句中肯定不能使用f,所以会报NameError。

将代码加以改进:

import time
try:
    f = open("b.txt", "r")  # FileNotFoundError
    try:
        while True:
            content = f.readline()
            if len(content) == 0:
                break
            time.sleep(2)  # 让代码停顿两秒
            print(content)
    finally:
        f.close()
        print("关闭文件")
except FileNotFoundError as ex:
    print(ex)  # 打印异常信息

cc003c6e92554728a4848079a924f8f3.png


打开a.txt 文件:


43926a1eba1344a3806840e3dfa788fa.png


2.2 File+Error例题


定义两个函数,分别完成读和写功能

要求将poetry.txt文件内容复制到copy.txt文件中。

# 读操作
def read():
    strs = ""  # 结果串
    flag = True
    try:
        file = open("poetry.txt", "r")  # 文件可能不存在
        try:
            while True:
                content = file.readline()
                if len(content) == 0:
                    break
                strs += content
        finally:
            file.close()
    except FileNotFoundError as ex:
        print(ex)
        flag = False
        pass
    return strs, flag
# 写操作
def write(strs):
    f = open("copy.txt", "w")
    f.write(strs)
    f.close()
# 执行方法
try:
    strs, flag = read()
    write(strs)
    if flag:
        print("copy successfully")
    else:
        print("copy failure")
except Exception as ex:
    print(ex)
    pass

今日份的分享就到这里啦!🌹🌹🌹欢迎关注博主学习不迷路🌹🌹🌹!


相关文章
|
3月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
170 72
|
3月前
|
移动开发 安全 Linux
Python文件操作的"保险箱":with语句深度实战指南
本文深入解析Python中`with`语句的原理与高级应用,通过“保险箱”类比,形象展示资源管理机制。从上下文管理协议到实战场景,涵盖文件、数据库、网络等多种资源的高效安全处理方式,助你写出更优雅、可靠的代码。
100 1
|
4月前
|
缓存 数据库连接 数据库
Python文件操作的“保险箱”:with语句深度实战指南
本文深入探讨Python中with语句在文件操作中的应用及其优势。首先介绍其底层原理,基于上下文管理协议自动管理资源的获取与释放,避免手动关闭文件导致的资源泄漏问题。接着通过基础文件读写、异常处理进阶和复合资源管理等实战场景解析with语句的便捷性与安全性。同时,阐述如何自定义上下文管理器以满足特定需求,并分析其性能考量及优化策略。最后总结实战经验,强调优先使用内置管理器、明确异常处理以及保持代码可读性的重要性,助力开发者高效编写健壮的程序。
83 1
|
4月前
|
自然语言处理 安全 JavaScript
Python文件操作的“保险箱”:with语句深度实战指南
Python中的`with`语句是文件操作和资源管理的强大工具,如同一个智能保险箱,自动处理打开和关闭操作,避免手动管理可能引发的错误。它通过上下文管理协议(`__enter__`和`__exit__`方法)确保资源在使用后正确释放。无论是逐块读取大文件、同时读写文件,还是处理特殊编码文件,`with`语句都能简化代码并提高安全性。此外,自定义上下文管理器可扩展到数据库连接等场景,而常见错误如重复关闭文件或忽略异常也需注意。结合生成器表达式批量处理文件时,`with`语句仍能保持高效和安全。总之,`with`语句是资源管理的瑞士军刀,让复杂操作变得简单可靠。
89 1
|
4月前
|
数据采集 运维 BI
Python 文件操作进阶|使用 shutil 实现高效文件复制
在开发和运维中,处理大量文件是常见需求,如备份配置、归档日志或构建部署包。手动复制粘贴已无法满足高效需求!Python 的 `shutil` 模块提供了强大的文件操作功能,支持单文件复制、目录树迁移及自动化任务构建。本文详解 `shutil.copy()` 基础用法与进阶技巧,如批量复制、自动路径检测、时间戳命名备份等,助你实现高效自动化。结合实战案例(如自动备份系统),让你的代码更专业!学习后,欢迎交流心得,一起精进 Python 技能。关注我,获取更多编程技巧与源码分享!
|
7月前
|
数据采集 监控 Python
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
Python爬虫异常处理:自动跳过无效URL
|
12月前
|
安全 Linux 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(一)
192 2
|
12月前
|
Python Windows 网络安全
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
Kali 渗透测试:基于结构化异常处理的渗透-使用Python编写渗透模块(二)
198 2
|
8月前
|
数据库连接 开发者 Python
Python中的异常处理
本文深入探讨了Python中的异常处理机制,包括异常的捕获、处理、抛出及最佳实践。通过try-except语句块,程序可以在运行时处理错误,增强健壮性和可维护性。文章还介绍了自定义异常类的创建与使用,并提供了代码示例和详细的语法说明。最后,总结了异常处理的最佳实践,如精确捕获异常、提供有用错误信息等,帮助开发者编写更可靠的代码。
236 14
|
12月前
|
存储 Python
Python文件操作(1)
【10月更文挑战第17天】
202 60
Python文件操作(1)

推荐镜像

更多