【100天精通python】Day19:文件及目录操作_基本文件操作

简介: 【100天精通python】Day19:文件及目录操作_基本文件操作

专栏导读

a50b69cc81bb4be29749f2dca96b2f56.png

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html

f8d8821388dc41358195b24b9133d6b0.png

文件操作是Python中常用的任务,它们使我们能够有效地处理文本、数据和其他类型的文件。Python提供了丰富的文件操作功能,可以通过打开、读取、写入、复制和删除文件。使用内置的open()函数可以打开文件并指定读取或写入模式。读取文件内容可使用read()或readlines()函数,而写入文件内容可以用write()或writelines()函数。shutil模块可用于复制和移动文件,os模块可用于删除文件。

1 文件的创建打开和关闭

       Python提供了许多文件操作的函数和方法,使得文件的读取、写入、复制、移动等操作变得简单和高效。要对文件进行读取、写入或其他操作,需要先打开文件,完成操作后再关闭文件。打开文件时,可以使用open()函数,它接受文件路径和打开模式作为参数,并返回一个文件对象。完成文件操作后,应当使用close()方法关闭文件对象,以释放资源。

1.1 使用内置函数open(),close()创建打开和关闭

1.打开文件 要打开一个文件,可以使用内置的open()函数。open()函数接受两个参数:文件名和打开模式(如读取模式、写入模式等)。打开模式包括:

  • "r": 读取模式(默认)。打开文件以供读取。
  • "w": 写入模式。打开文件以供写入,如果文件已存在则会被覆盖。
  • "a": 追加模式。打开文件以供写入,如果文件已存在则会在文件末尾添加内容。
  • "x": 创建模式。创建一个新文件并打开以供写入,如果文件已存在则会报错。
  • "b": 二进制模式。用于操作二进制文件。
  • "t": 文本模式(默认)。用于操作文本文件。

82556df99c6f41649b22864604fbe5c8.png

下面是文件的打开和关闭示例:

# 打开文件并写入内容
file_path = "example.txt"
file = open(file_path, "w")  # 使用写入模式打开文件
file.write("Hello, this is a new file!\n")
file.write("Welcome to Python file handling.\n")
file.close()  # 关闭文件
# 打开文件并读取内容
file = open(file_path, "r")  # 使用读取模式打开文件
content = file.read()
print("文件内容:")
print(content)
file.close()  # 关闭文件

在上述示例中,首先使用open()函数以写入模式打开文件,并写入内容后关闭文件。然后使用open()函数以读取模式再次打开同一文件,并读取文件内容后再次关闭文件。

1.2 使用with语句打开和关闭

请注意,为了确保文件资源正确释放,最好使用with语句来打开文件,这样即使发生异常,也会在退出with代码块后自动关闭文件。下面是使用with语句的示例:

file_path = "example.txt"
# 使用with语句打开文件
with open(file_path, "w") as file:
    file.write("Hello, this is a new file!\n")
    file.write("Welcome to Python file handling.\n")
# 使用with语句读取文件
with open(file_path, "r") as file:
    content = file.read()
    print("文件内容:")
    print(content)

2 文件的读取

2.1 读取整个文件read()

       取文件内容可以使用read()方法读取文件的内容。read()方法将整个文件读取为一个字符串。

示例:

file = open("example.txt", "r")
content = file.read()
print(content)
file.close()

2.2  逐行读取文件内容readlines()

       使用readlines()方法可以逐行读取文件的内容,并将每一行存储为一个表中的元素。

示例:

file = open("example.txt", "r")
lines = file.readlines()
for line in lines:
    print(line)
file.close()

3 文件的写入

3.1 直接写入

       在Python中,可以使用文件对象的write()方法来向文件中写入内容。写入操作的前提是文件已经以写入模式("w")或追加模式("a")打开。写入模式会清空文件中的内容,并将新内容写入,而追加模式会将新内容追加到文件末尾而不清空原有内容。

下面是文件写入的示例:

# 使用写入模式("w")打开文件
file_path = "example.txt"
file = open(file_path, "w")
# 向文件中写入内容
file.write("Hello, this is a new file!\n")
file.write("Welcome to Python file handling.\n")
# 关闭文件
file.close()

运行上述代码后,"example.txt"文件中的内容会被覆盖为:

d79b69b605ea4c20ac0cb4162dc4a1f5.png

如果使用追加模式("a")打开文件,新内容将会被追加到文件末尾而不影响原有内容:

# 使用追加模式("a")打开文件
file_path = "example.txt"
file = open(file_path, "a")
# 向文件中追加内容
file.write("This is an additional line.\n")
# 关闭文件
file.close()

运行上述代码后,"example.txt"文件中的内容会变为:

053822eae42b45cd8bcef1be4d1061de.png

 需要注意的是,在使用文件写入操作时,务必确保文件已经以写入模式或追加模式打开,并在写入完毕后及时关闭文件,以释放文件资源。另外,为了确保文件正确关闭,建议使用with语句来打开文件。

3.2 写入整个文件

要将整个内容写入文件,可以使用文件打开模式为"w"或"wb"来打开文件,并使用write()方法将内容写入文件。如果文件不存在,将会创建一个新文件并写入内容;如果文件已存在,写入内容将覆盖原有内容。

示例1:

file_path = "example.txt"
content = "Hello, this is a new file!\nWelcome to Python file handling."
with open(file_path, "w") as file:
    file.write(content)

结果:在example.txt文件中写入以下内容:

a2f4fc933f0540e8a986a70958edfaaf.png

在上面的示例中,将整个内容content一次性写入到文件example.txt中。

3.3 逐行写入文件

       要逐行写入文件,可以使用文件打开模式为"w"或"wb"来打开文件,并使用write()方法逐行写入内容。每次写入后加入换行符\n来换行。

示例2:

file_path = "example.txt"
lines = ["Line 1", "Line 2", "Line 3"]
with open(file_path, "w") as file:
    for line in lines:
        file.write(line + "\n")

结果:在example.txt文件中写入以下内容:

420211fdac3e4b229cf7210244b1db89.png

 在上面的示例中,通过循环将列表lines中的每一行内容逐行写入到文件example.txt中,并在每行末尾添加\n换行符,以实现逐行写入。

需要注意的是,在使用文件写入时,要确保文件打开模式为写入模式"w"或追加模式"a"。同时,在使用with语句打开文件后,文件会在退出with代码块时自动关闭,确保文件资源正确释放。

在示例1中,将整个内容写入文件时,使用write()方法将整个字符串写入文件。在示例2中,逐行写入文件时,使用for循环遍历每一行内容,并使用write()方法逐行写入文件。每次写入后都加入一个换行符\n,以确保每行内容单独占据一行 。

4 文件的复制与删除

       Python中可以使用shutil模块来复制和删除文件。

4.1 文件复制

       要复制文件,可以使用shutil模块的copy()函数。copy()函数接受两个参数:源文件名和目标文件名。它会将源文件复制到目标文件,并返回目标文件的路径。

示例:

import shutil
# 源文件路径
source_file = "source.txt"
# 目标文件路径
destination_file = "destination.txt"
# 使用shutil模块的copyfile()函数进行文件复制
shutil.copyfile(source_file, destination_file)
print("文件复制成功!")

4.2 文件删除

       在Python中,可以使用os模块的remove()函数来删除文件。remove()函数接受一个参数,即要删除的文件的路径。以下是删除文件的示例代码:

import os
# 要删除的文件路径
file_to_delete = "file_to_delete.txt"
# 使用os模块的remove()函数删除文件
os.remove(file_to_delete)
print("文件删除成功!")

注意:在进行文件删除操作时,请确保操作的文件是不需要的或者备份已完成。文件删除是一个不可逆的操作,删除后无法恢复文件。因此,在删除文件之前要谨慎确认。

import os
# 定义要删除的文件路径
file_path = 'example.txt'
try:
    # 删除文件
    os.remove(file_path)
    print(f"文件 {file_path} 删除成功")
except FileNotFoundError:
    print(f"文件 {file_path} 不存在")
except Exception as e:
    print(f"删除文件时发生错误:{e}")

上述代码中,我们首先导入了os模块。然后,定义了要删除的文件路径,即'example.txt'。接着使用try-except语句块来处理文件删除操作可能引发的异常。如果文件存在并且删除成功,将打印出"文件 example.txt 删除成功"。如果文件不存在,则会打印出"文件 example.txt 不存在"。如果删除文件时发生其他错误,则会打印出相应的错误信息。请注意,在执行删除操作之前,请确保你有足够的权限执行该操作。

5 基本文件操作的异常处理

       在进行基本文件操作时,我们需要注意文件操作可能引发的异常,例如文件不存在、文件无法打开或读取、文件写入失败等。为了处理这些错误,我们可以使用异常处理机制来捕获并处理这些异常情况。

       在Python中,我们可以使用try-except语句来实现异常处理。在try代码块中执行文件操作,如果出现异常,则会跳转到相应的except代码块进行处理。

以下是一个基本文件操作的错误处理示例:

file_path = "example.txt"
try:
    # 打开文件以读取内容("r"表示读取模式)
    with open(file_path, "r") as file:
        content = file.read()
    print("文件内容:", content)
except FileNotFoundError:
    print("文件不存在,请确认文件路径是否正确。")
except IOError:
    print("文件读取失败,请检查文件是否可读。")
finally:
    print("文件操作完成。")

在上面的示例中,我们尝试打开文件并读取其中的内容。如果文件不存在,将会抛出FileNotFoundError异常;如果文件无法读取,将会抛出IOError异常。在try代码块中进行文件操作,如果出现异常,将会跳转到相应的except代码块进行处理。最后,不管是否发生异常,finally代码块中的代码都会执行。

6 文件的基本操作,完整实例演示

下面是一个完整的Python实例,演示了文件的基本操作,包括创建文件、写入内容、读取内容、复制文件、删除文件和追加内容。

def create_file(file_path):
    try:
        # 创建文件并写入内容
        with open(file_path, "w") as file:
            file.write("Hello, this is a new file!\n")
            file.write("Welcome to Python file handling.\n")
        print(f"文件 {file_path} 创建成功。")
    except IOError:
        print("文件创建失败。")
def read_file(file_path):
    try:
        # 打开文件以读取内容
        with open(file_path, "r") as file:
            content = file.read()
        print("文件内容:")
        print(content)
    except FileNotFoundError:
        print("文件不存在,请确认文件路径是否正确。")
    except IOError:
        print("文件读取失败,请检查文件是否可读。")
def copy_file(source_file, target_file):
    try:
        # 读取源文件内容
        with open(source_file, "r") as source:
            content = source.read()
        # 写入目标文件
        with open(target_file, "w") as target:
            target.write(content)
        print(f"文件 {source_file} 复制成功,保存为 {target_file}。")
    except FileNotFoundError:
        print("源文件不存在,请确认文件路径是否正确。")
    except IOError:
        print("文件复制失败。")
def append_file(file_path, content_to_append):
    try:
        # 在文件末尾追加内容
        with open(file_path, "a") as file:
            file.write(content_to_append + "\n")
        print("内容成功追加到文件。")
    except FileNotFoundError:
        print("文件不存在,请确认文件路径是否正确。")
    except IOError:
        print("文件追加失败。")
def delete_file(file_path):
    try:
        # 删除文件
        import os
        os.remove(file_path)
        print(f"文件 {file_path} 删除成功。")
    except FileNotFoundError:
        print("文件不存在,请确认文件路径是否正确。")
    except IOError:
        print("文件删除失败。")
if __name__ == "__main__":
    file_path = "example.txt"
    create_file(file_path)
    read_file(file_path)
    target_file = "example_copy.txt"
    copy_file(file_path, target_file)
    read_file(target_file)
    append_content = "This line is appended to the file."
    append_file(file_path, append_content)
    read_file(file_path)
    delete_file(file_path)

运行结果如下

76400b90ce534827b3095f71813d6275.png

目录
相关文章
|
1月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
444 2
|
11天前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
|
3月前
|
安全 Python
Python语言中常用的文件操作方法探讨
通过上述方法的结合使用,我们可以构筑出强大并且可靠的文件操作逻辑,切实解决日常编程中遇到的文件处理问题。
175 72
|
2月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
100 0
|
3月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
3月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
628 0
|
3月前
|
数据管理 开发工具 索引
在Python中借助Everything工具实现高效文件搜索的方法
使用上述方法,你就能在Python中利用Everything的强大搜索能力实现快速的文件搜索,这对于需要在大量文件中进行快速查找的场景尤其有用。此外,利用Python脚本可以灵活地将这一功能集成到更复杂的应用程序中,增强了自动化处理和数据管理的能力。
214 0
|
25天前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
191 102
|
25天前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
199 104
|
25天前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
185 103

热门文章

最新文章

  • 1
    Python零基础爬取东方财富网股票行情数据指南
    46
  • 2
    解析Python爬虫中的Cookies和Session管理
    48
  • 3
    Python日志模块配置:从print到logging的优雅升级指南
    40
  • 4
    【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
    40
  • 5
    (Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
    47
  • 6
    (Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
    72
  • 7
    (numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
    42
  • 8
    (numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
    63
  • 9
    (Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
    33
  • 10
    (Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
    54
  • 推荐镜像

    更多