Python 中的文件处理


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

Python 文件处理

Python 也支持文件处理,并允许用户处理文件,即读取和写入文件,以及许多其他文件处理选项,以对文件进行操作。文件处理的概念已经扩展到各种其他语言,但实现要么复杂要么冗长,但与 Python 的其他概念一样,这里的这个概念也简单而简短。Python将文件视为文本或二进制文件的方式有所不同,这一点很重要。每行代码都包含一个字符序列,它们形成一个文本文件。文件的每一行都以一个特殊字符终止,称为 EOL 或行尾字符,例如逗号 {,} 或换行符。它结束当前行并告诉解释器新的一行已经开始。让我们从读取和写入文件开始。

文件处理的优点

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

文件处理的缺点

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

对于本文,我们将考虑以下“ \geeks.txt** ”文件作为示例。

Hello world
GeeksforGeeks
123 456

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

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

f = open(filename, mode)

其中支持以下模式:

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

在读取模式下工作

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

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

  • Python3
# a file named "geek", will be opened with the reading mode.
file = open('geek.txt', 'r')

# This will print every line one by one in the file
for each in file:
    print (each)

\输出:**

Hello world

GeeksforGeeks

123 456

\示例 2:**在此示例中,我们将提取包含文件中所有字符的字符串,然后我们可以使用\file.read()**

  • Python3
# Python code to illustrate read() mode
file = open("geeks.txt", "r")
print (file.read())

\输出:**

Hello world
GeeksforGeeks
123 456

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

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

print(data)

\输出:**

Hello world
GeeksforGeeks
123 456

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

  • Python3
# Python code to illustrate read() mode character wise
file = open("geeks.txt", "r")
print (file.read(5))

\输出:**

Hello

\实施例5:**

我们在Python中读取文件时也可以进行分行。split() 函数在遇到空格时分割变量。您还可以根据需要使用任何字符进行拆分。

  • Python3
# Python code to illustrate split() function
with open("geeks.txt", "r") as file:
    data = file.readlines()
    for line in data:
        word = line.split()
        print (word)

\输出:**

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

\使用 write() 函数创建文件**

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

工作在写入模式

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

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

  • Python3
# Python code to create a file
file = open('geek.txt','w')
file.write("This is the write command")
file.write("It allows us to write in a particular file")
file.close()

\输出:**

This is the write commandIt allows us to write in a particular file

\示例 2:**我们还可以将书面语句与 with() 函数一起使用。

  • Python3
# Python code to illustrate with() alongwith write()
with open("file.txt", "w") as f:
    f.write("Hello World!!!")

\输出:**

Hello World!!!

\追加模式的工作原理**

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

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

  • Python3
# Python code to illustrate append() mode
file = open('geek.txt', 'a')
file.write("This will add this line")
file.close()

\输出:**

This is the write commandIt allows us to write in a particular fileThis will add this line

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

rstrip(): This function strips each line of a file off spaces from the right-hand side.
lstrip(): This function strips each line of a file off spaces from the left-hand side.

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

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

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

  • Python3
import os

def create_file(filename):
    try:
        with open(filename, 'w') as f:
            f.write('Hello, world!\n')
        print("File " + filename + " created successfully.")
    except IOError:
        print("Error: could not create file " + filename)

def read_file(filename):
    try:
        with open(filename, 'r') as f:
            contents = f.read()
            print(contents)
    except IOError:
        print("Error: could not read file " + filename)

def append_file(filename, text):
    try:
        with open(filename, 'a') as f:
            f.write(text)
        print("Text appended to file " + filename + " successfully.")
    except IOError:
        print("Error: could not append to file " + filename)

def rename_file(filename, new_filename):
    try:
        os.rename(filename, new_filename)
        print("File " + filename + " renamed to " + new_filename + " successfully.")
    except IOError:
        print("Error: could not rename file " + filename)

def delete_file(filename):
    try:
        os.remove(filename)
        print("File " + filename + " deleted successfully.")
    except IOError:
        print("Error: could not delete file " + filename)


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

    create_file(filename)
    read_file(filename)
    append_file(filename, "This is some additional text.\n")
    read_file(filename)
    rename_file(filename, new_filename)
    read_file(new_filename)
    delete_file(new_filename)

\输出:**

File example.txt created successfully.
Hello, world!

Text appended to file example.txt successfully.
Hello, world!
This is some additional text.

File example.txt renamed to new_example.txt successfully.
Hello, world!
This is some additional text.

File new_example.txt deleted successfully.


原文链接:codingdict.net