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

目录

专栏导读

[1 文件的创建打开和关闭](#1 文件的创建打开和关闭)

[2.1 使用内置函数open(),close()创建打开和关闭](#2.1 使用内置函数open(),close()创建打开和关闭)

[2.2 使用with语句打开和关闭](#2.2 使用with语句打开和关闭)

[2 文件的读取](#2 文件的读取)

[2.1 读取整个文件read()](#2.1 读取整个文件read())

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

[3 文件的写入](#3 文件的写入)

[3.1 直接写入](#3.1 直接写入)

[3.2 写入整个文件](#3.2 写入整个文件)

[3.3 逐行写入文件](#3.3 逐行写入文件)

[4 文件的复制与删除](#4 文件的复制与删除)

[4.1 文件复制](#4.1 文件复制)

[4.2 文件删除](#4.2 文件删除)

[5 基本文件操作的异常处理](#5 基本文件操作的异常处理)

[6 文件的基本操作,完整实例演示](#6 文件的基本操作,完整实例演示)


专栏导读

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


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

1 文件的创建打开和关闭

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

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

  1. 打开文件 要打开一个文件,可以使用内置的open()函数。open()函数接受两个参数:文件名和打开模式(如读取模式、写入模式等)。打开模式包括:
  • "r": 读取模式(默认)。打开文件以供读取。
  • "w": 写入模式。打开文件以供写入,如果文件已存在则会被覆盖。
  • "a": 追加模式。打开文件以供写入,如果文件已存在则会在文件末尾添加内容。
  • "x": 创建模式。创建一个新文件并打开以供写入,如果文件已存在则会报错。
  • "b": 二进制模式。用于操作二进制文件。
  • "t": 文本模式(默认)。用于操作文本文件。

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

python 复制代码
# 打开文件并写入内容
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()函数以读取模式再次打开同一文件,并读取文件内容后再次关闭文件。

2.2 使用with语句打开和关闭

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

python 复制代码
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()方法将整个文件读取为一个字符串。

示例:

python 复制代码
file = open("example.txt", "r")
content = file.read()
print(content)
file.close()

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

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

示例:

python 复制代码
file = open("example.txt", "r")
lines = file.readlines()
for line in lines:
    print(line)
file.close()

3 文件的写入

3.1 直接写入

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

下面是文件写入的示例:

python 复制代码
# 使用写入模式("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"文件中的内容会被覆盖为:

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

python 复制代码
# 使用追加模式("a")打开文件
file_path = "example.txt"
file = open(file_path, "a")

# 向文件中追加内容
file.write("This is an additional line.\n")

# 关闭文件
file.close()

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

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

3.2 写入整个文件

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

示例1:

python 复制代码
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文件中写入以下内容:

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

3.3 逐行写入文件

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

示例2:

python 复制代码
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文件中写入以下内容:

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

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

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

4 文件的复制与删除

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

4.1 文件复制

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

示例:

python 复制代码
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()函数接受一个参数,即要删除的文件的路径。以下是删除文件的示例代码:

python 复制代码
import os

# 要删除的文件路径
file_to_delete = "file_to_delete.txt"

# 使用os模块的remove()函数删除文件
os.remove(file_to_delete)

print("文件删除成功!")

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

python 复制代码
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代码块进行处理。

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

python 复制代码
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实例,演示了文件的基本操作,包括创建文件、写入内容、读取内容、复制文件、删除文件和追加内容。

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)

运行结果如下

相关推荐
新之助小锅1 小时前
java版连接汇川PLC,发送数据,读取数据,保持重新链接,适用安卓
android·java·python
海琴烟Sunshine1 小时前
leetcode 383. 赎金信 python
python·算法·leetcode
大聪明-PLUS5 小时前
如何使用 Docker 打包一个简单的应用程序:简易指南
linux·嵌入式·arm·smarc
深耕AI6 小时前
【完整教程】宝塔面板FTP配置与FileZilla连接服务器
运维·服务器
serve the people6 小时前
Prompts for Chat Models in LangChain
java·linux·langchain
李昊哲小课7 小时前
Ubuntu 24.04 MariaDB 完整安装与配置文档
linux·ubuntu·mariadb
惊讶的猫7 小时前
LSTM论文解读
开发语言·python
无聊的小坏坏7 小时前
从单 Reactor 线程池到 OneThreadOneLoop:高性能网络模型的演进
服务器·网络·一个线程一个事件循环
测试老哥8 小时前
软件测试之单元测试知识总结
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
buvsvdp50059ac8 小时前
如何在VSCode中设置Python解释器?
ide·vscode·python