Python 中的文件处理

Python 支持文件处理,并提供了文件操作的功能,包括读取和写入文件,以及其他许多文件处理选项。

Python 中的文件处理是一种功能强大且多功能的工具,可用于执行各种操作。然而,在编写 Python 程序时,仔细考虑文件处理的优点和缺点非常重要,以确保代码安全、可靠且性能良好。

Python 文件处理

Python 也支持文件处理,并提供了文件操作的功能,包括读取和写入文件,以及其他许多文件处理选项。需要注意的是,Python将文件视为文本或二进制文件的方式有所不同。每行代码都包含一个字符序列,它们形成一个文本文件。每一行都以特殊字符结束,通常是换行符或逗号等。这个特殊字符被称为行尾字符(EOL),它标志着当前行的结束并告诉解释器新的一行已经开始。

文件处理的优点

  • 多功能性:Python 中的文件处理允许您执行各种操作,例如创建、读取、写入、附加、重命名和删除文件。
  • 灵活性:Python 中的文件处理非常灵活,因为它允许您处理不同的文件类型(例如文本文件、二进制文件、CSV 文件等),并对文件执行不同的操作(例如读、写、追加、 ETC。)。
  • 用户友好:Python 为文件处理提供了用户友好界面,使得创建、读取和操作文件变得容易。
  • 跨平台:Python文件处理功能可以跨不同平台(例如Windows、Mac、Linux)工作,从而实现无缝集成和兼容性。

文件处理的缺点

  • 容易出错: Python 中的文件处理操作很容易出错,特别是如果代码编写不仔细或者文件系统存在问题(例如文件权限、文件锁等)。
  • 安全风险:Python 中的文件处理也可能带来安全风险,特别是当程序接受可用于访问或修改系统上敏感文件的用户输入时。
  • 复杂性:Python 中的文件处理可能很复杂,尤其是在处理更高级的文件格式或操作时。必须仔细注意代码,以确保文件得到正确、安全的处理。
  • 性能:Python 中的文件处理操作可能比其他编程语言慢,尤其是在处理大文件或执行复杂操作时。

以“ geeks.txt ”文件作为示例,假设geeks.txt文件有以下内容:

Hello world
JkhxwforGeeks
123 456

Python 中 open() 函数的工作原理

在对文件执行任何操作(例如读取或写入)之前,首先,我们必须打开该文件。为此,我们应该使用Python的内置函数open(),但在打开时,我们必须指定模式,它代表打开文件的目的。

其中支持以下模式:

  1. r:打开现有文件进行读取操作。
  2. w:打开现有文件进行写操作。如果文件已经包含一些数据,那么它将被覆盖,但如果文件不存在,那么它也会创建该文件。
  3. a:  打开一个现有文件进行追加操作。它不会覆盖现有数据。
  4.  r+:  读取数据并将数据写入文件。文件中先前的数据将被覆盖。
  5. w+:写入和读取数据。它将覆盖现有数据。
  6. a+:从文件中追加和读取数据。它不会覆盖现有数据。

在读取模式下工作

在 Python 中读取文件的方法不止一种。让我们看看如何在读取模式下读取文件的内容。

示例 1: open 命令将以读取模式打开文件,for 循环将打印文件中存在的每一行。

# 打开名为 "geek" 的文件,以读取模式打开。
file = open('geek.txt', 'r')

# 这将逐行打印文件中的每一行内容
for each in file:
    print(each)

输出:

Hello world
JkhxwforGeeks
123 456

示例 2:在此示例中,我们将打开了一个名为 “geeks.txt” 的文件,并以读取模式打开它。然后,使用 read() 方法读取文件的内容,并将整个文件的内容打印出来。

# Python 代码示例,演示 read() 模式
file = open("geeks.txt", "r")
print(file.read())

输出:

Hello world
JkhxwforGeeks
123 456

示例 3:在此示例中,我们将了解如何使用with语句读取文件。

# Python code to illustrate with()
with open("geeks.txt") as file:
	data = file.read()

print(data)

输出:

Hello world
JkhxwforGeeks
123 456

示例 4:读取文件的另一种方法是读取文件中一定数量的字符,如以下代码所示,解释器将读取存储数据的前五个字符并将其作为字符串返回: 

# Python 代码示例,演示 read() 模式按字符读取
file = open("geeks.txt", "r")
print(file.read(5))

输出:

Hello

示例5:

以下代码打开一个名为 “geeks.txt” 的文件,并以读取模式打开它。然后,使用 readlines() 方法逐行读取文件的内容,将每一行的文本存储在 data 列表中。接下来,对于 data 列表中的每一行,使用 split() 方法将行文本按空格分割成单词,并将这些单词存储在 words 列表中。最后,打印出每一行的单词列表。

# Python 代码示例,演示 split() 函数
with open("geeks.txt", "r") as file:
    data = file.readlines()
    for line in data:
        words = line.split()
        print(words)

输出:

['Hello', 'world']
['JkhxwforGeeks']
['123', '456']

使用 write() 函数创建文件

就像在 Python 中读取文件一样,在 Python 中写入文件有多种方法。让我们看看如何使用 Python 中的 write() 函数写入文件的内容。

工作在写入模式

让我们看看如何创建文件以及写入模式如何工作。

示例 1:在本示例中,我们将了解如何使用写入模式和 write() 函数写入文件。close() 命令终止所有正在使用的资源并释放该特定程序的系统。 

# Python 代码示例,创建一个文件
file = open('geek.txt', 'w')
file.write("这是写入命令\n")
file.write("它允许我们写入特定的文件\n")
file.close()

输出:

这是写入命令
它允许我们写入特定的文件

示例 2:我们还可以将write()与 with() 函数一起使用。

# Python 代码示例,演示使用 with() 和 write()
with open("file.txt", "w") as f:
    f.write("Hello World!!!")

输出:

Hello World!!!

以上这段代码使用 with 语句打开了一个名为 “file.txt” 的文件,并以写入模式打开它。然后,使用 write() 方法向文件中写入文本内容 “Hello World!!!”。使用 with 语句可以确保在代码块结束时文件被自动关闭,以确保写入的内容被保存。

追加模式的工作原理

让我们看看追加模式是如何工作的。

示例:在此示例中,我们将使用上一示例1中创建的文件。

# Python 代码示例,演示 append() 模式
file = open('geek.txt', 'a')
file.write("这将添加这一行")
file.close()

输出:

这是写入命令
它允许我们写入特定的文件
这将添加这一行

文件处理中还有各种其他命令用于处理各种任务: 

  • rstrip():此函数从文件的每一行中删除右侧的空格。
  • lstrip():此函数从文件的每一行中删除左侧的空格。

它旨在在您使用代码时提供更清晰的语法和异常处理。这就解释了为什么在适用的情况下将它们与语句一起使用是一种很好的做法。这很有用,因为使用此方法打开的任何文件都会在完成后自动关闭,因此可以自动清理。 

实现文件处理中的所有功能

在此示例中,我们将涵盖上面看到的所有概念。除此之外,我们还将了解如何使用 Python os 模块中的 remove() 函数删除文件。

import os

def create_file(filename):
    try:
        with open(filename, 'w') as f:
            f.write('Hello, world!\n')
        print("文件 " + filename + " 创建成功。")
    except IOError:
        print("错误:无法创建文件 " + filename)

def read_file(filename):
    try:
        with open(filename, 'r') as f:
            contents = f.read()
            print(contents)
    except IOError:
        print("错误:无法读取文件 " + filename)

def append_file(filename, text):
    try:
        with open(filename, 'a') as f:
            f.write(text)
        print("文本成功追加到文件 " + filename + "。")
    except IOError:
        print("错误:无法追加到文件 " + filename)

def rename_file(filename, new_filename):
    try:
        os.rename(filename, new_filename)
        print("文件 " + filename + "成功重命名为 " + new_filename)
    except IOError:
        print("错误:无法重命名文件 " + filename)

def delete_file(filename):
    try:
        os.remove(filename)
        print("文件 " + filename + " 删除成功。")
    except IOError:
        print("错误:无法删除文件 " + filename)

if __name__ == '__main__':
    filename = "example.txt"
    new_filename = "new_example.txt"

    create_file(filename)
    read_file(filename)
    append_file(filename, "这是一些附加的文本。\n")
    read_file(filename)
    rename_file(filename, new_filename)
    read_file(new_filename)
    delete_file(new_filename)

输出:

文件example.txt创建成功.
Hello, world!

文本已成功附加到文件example.txt。
Hello, world!
这是一些附加的文本。

文件example.txt重命名为new_example.txt
Hello, world!
这是一些附加的文本。

文件new_example.txt删除成功。

原创文章,作者:jkhxw,如若转载,请注明出处:https://www.jkhxw.com/python-file-handling/

(0)
上一篇 2023年9月24日
下一篇 2023年9月25日

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注