使用 Python,您可以以编程方式直接修改和写入文件,从而省去了手动操作的麻烦。在本文中,您将学习如何使用 Python 写入文件。

在深入探讨如何使用 Python 写入文件之前,我想提一下,我使用的是 Python 3.8.5 和 Windows 10。但是,在任何操作系统上,您的结果都应该相同。

在阅读本文之前,最好先了解一些文件操作知识。有关更多信息,请阅读 如何在 Python 中处理文件和目录 and 如何使用 Python 重命名文件 .

在 Python 中,有多种方法可以写入文件和写入数据。让我们从方法开始 write()

在 Python 中使用 write() 写入文件

在 Python 中编写文件的第一步是打开它,这意味着你可以通过脚本访问它。打开文件有两种方法。第一种是使用 open() ,如下所示:

# open the file in the write mode
f = open('file.txt', 'w')

但是,使用此方法,您需要通过调用该方法自己关闭文件 close()

# close the file
f.close()

使用语句更短 with ,因为我们不需要调用 close() 方法。

这是我们将在本教程中使用的方法:

with open("file.txt", "w") as file:

上面的代码行将打开 file.txt 并将文件处理程序分配给名为的变量 file .

然后我们可以调用该 write() 方法以编程方式修改我们的文件。

我们来运行一个例子:

file.write("Python is awesome!")

执行完此命令后,我们想读取文件以查看它是否已更新。我们需要调用该 read() 方法,如下所示:

# Open and read the file after writing:
with open("file.txt", "r") as file:
    print(file.read())

值得注意的是, open() 函数中的参数将决定该 write() 方法在何处生效。

如果您想了解有关如何使用该 write() 方法在 Python 中写入文件的更多信息,请查看我们的课程“ 使用 Python 中的文件和目录” .

使用 writelines() 将列表数据添加到文件

您可以使用的另一种方法是 writelines() 。此方法以编程方式添加列表的术语。让我们运行一个示例:

# open file
with open("file2.txt", "a") as file:
    # write to file
    file.writelines(["Hey there!", " is awesome!"])

#open and read the file after the appending:
with open("file2.txt", "r") as file:
    print(file.read())

检查输出后,您会注意到 writelines() 不添加任何行分隔符 ;我们必须指定行分隔符。我们可以使用以下内容修改代码:

# open and write to file
with open("file2.txt", "a") as file:
    file.writelines(["Hey there!\n", " is awesome!\n"])

# open and read the file after the appending:
with open("file2.txt", "r") as file:
    print(file.read())

一种更 Pythonic 且更有效的方法是:

# open file
with open("file2.txt", "a") as file:
    # set a list of lines to add:
    lines = ["Hey there!", " is awesome!"]
    # write to file and add a separator
    file.writelines(s + '\n' for s in lines)

#open and read the file after the appending:
with open("file2.txt", "r") as file:
    print(file.read())

上面的代码将使用新行作为行分隔符。

使用 Python 将数据写入 CSV 文件

您可能会发现直接使用 Python 更新 CSV 文件很有用。

CSV 代表逗号分隔值。如果您是数据专业人士,您肯定遇到过这种文件。CSV 文件是包含数据列表的纯文本文件。这种类型的文件通常用于在应用程序之间交换数据。如果您想刷新您对 CSV 文件的了解,请阅读我们的文章 如何在 Python 中读取 CSV 文件 .

在本部分中,我们将使用 Python 的内置 csv 模块来更新 CSV 文件。

当您想在 Python 中将数据写入文件时,您可能希望一次添加一行或多行。数据可以存储在列表或字典中。让我们探索一些在 Python 中将数据写入文件的方法。

将列表数据写入 CSV

让我们探索如何使用添加单行数据 writerow() 和使用添加多行数据 writerows() .

使用 writerow() 来写入单行

要写入 CSV 文件,我们需要打开文件,创建一个写入器对象并更新文件。让我们运行一个例子:

# import
import csv

# Create header and data variables
header = ['last_name', 'first_name', 'zip_code', 'spending']
data = ['Doe', 'John', 546000, 76]

with open('customers.csv', 'w', encoding='UTF8', newline='') as file:
    # Create a writer object
    writer = csv.writer(file)
    # Write the header
    writer.writerow(header)
    # Write the data
    writer.writerow(data)

有关详细信息,最好阅读 文档 .

现在,我们来探讨一下当需要添加多行数据时如何在 Python 中写入数据。

使用 writerows() 写入多行

我们可以使用该方法将多行写入文件 writerows()

# import
import csv

# Create header and data variables
header = ['last_name', 'first_name', 'zip_code', 'spending']
data = [
    ['Smith', 'Nicholas', 453560, 82],
    ['Thompson', 'Julia', 326908, 143],
    ['French', 'Michael', 678321, 189],
    ['Wright', 'Eva', 285674, 225],
    ['White', 'David', 213456, 167]
]

with open('customers.csv', 'w', encoding='UTF8', newline='') as file:
    # Create a writer object
    writer = csv.writer(file)
    # Write the header
    writer.writerow(header)
    # Add multiple rows of data
    writer.writerows(data)

我们刚刚在文件中添加了几行。

您可以 writerows() 文档 方法 .

将字典数据写入 CSV

如果 CSV 文件的每一行都是一个字典,则可以使用 csv 模块的 dictWriter() 功能更新该文件。例如:

# import
import csv

# csv header
fieldnames = ['last_name', 'first_name', 'zip_code', 'spending']

# csv data
rows = [{
    'last_name': 'bloggs',
    'first_name': 'Joe',
    'zip_code': 986542,
    'spending': 367
},{
    'last_name': 'Soap',
    'first_name': 'Bob',
    'zip_code': 567890,
    'spending': 287
},{
    'last_name': 'farnsbarns',
    'first_name': 'Charlie',
    'zip_code': 123456,
    'spending': 245
}]

with open('customers.csv', 'w', encoding='UTF8', newline='') as f:
    # Create a writer object
    writer = csv.DictWriter(f, fieldnames=fieldnames)
    # Write header
    writer.writeheader()
    # Write data from dictionary
    writer.writerows(rows)

这就是你所要做的全部!

使用 Python 处理文件和目录 的课程 .

使用 pathlib 在 Python 中写入文件

现在让我们探索如何使用该 pathlib 模块在 Python 中写入文件。如果您不熟悉 pathlib,请参阅我之前关于 使用 Python 重命名文件的 .

值得注意的是, pathlib 在操作系统之间具有更高的可移植性,因此更受青睐。

使用 write_text()

我们可以使用 Path().write_text() 方法将 pathlib 文本写入文件。

首先,我们使用 Path 类 from pathlib 来访问 file.txt ,其次,我们调用 write_text() 方法将文本附加到文件。让我们运行一个例子:

# import 

from pathlib import Path 

# Open a file and add text to file

Path('file.txt').write_text('Welcome to ')

接下来,我们将使用 is_file() , with_name() with_suffix() 函数来过滤要更新的文件。我们只会更新那些满足特定条件的文件。

如果路径指向常规文件,则 is_file() False 否则为 True。该 with_name() 函数将返回一个具有更改文件名的新路径。最后, with_suffix() 将创建一个具有新文件扩展名的新路径。

Python 文档 中阅读这些方法的详细信息 .

让我们运行一个示例来演示这一切。我们将打开文本文件,写入一些文本,重命名文件,并将其保存为 CSV 文件。

# import
from pathlib import Path

# set the directory
path = Path.cwd() / 'file.txt'

# Check if the file is a file
if path.is_file():
    # add text
    path.write_text('Welcome to ')
    # rename file with new extension
    path.replace(path.with_name('new_file').with_suffix('.csv'))

Python 中的文件操作

在最后一部分中,我们将探索使用 tell() seek() 方法在 Python 中进行文件操作。

使用 tell() 获取当前位置

tell() 方法可用于获取文件句柄在文件中的当前位置。

它有助于确定从文件开头的字节数来读取或写入文件的数据的位置。

您可以将文件句柄视为定义在文件中读取或写入数据的位置的游标。此方法不带参数并返回一个整数。

我们来运行一个例子:

# Open a file in read mode
with open("file.txt", "r") as file:
    # print position of handle
    print(file.tell())
    # prints 0

您可以在 Python 文档 .

使用 seek() 更改流位置

seek() 方法用于改变流位置。流是随时间变化而可用的数据元素序列,流位置指的是文件中指针的位置。

如果您需要读取或写入文件的特定部分, seek()

fp.seek(offset, whence)

这是什么意思?

  • fp 是文件指针。
  • offset 是要移动的位置数。它可以是正数(向前移动)或负数(向后移动)。
  • whence 定义您的参考点。它可以是:
    • 0: The beginning of the file.
    • 1: The current position in the file.
    • 2: The end of the file.

如果省略 whence 参数,则默认值为 0。

当我们打开文件时,位置是文件的开头。当我们对其进行操作时,位置会前进。

当我们需要遍历打开的文件时, seek()

# Open a file
with open("file.txt", "r") as file:
    file.seek(4)
    print(file.readline())

您可以在 Python 文档中找到更多信息。

了解有关使用 Python 处理文件的更多信息

我们在本文中涵盖了很多内容。您将获得一些有关使用 Python 进行文件操作的扎实知识。

现在您了解了如何在 Python 中写入文件以及如何在 Python 中将数据写入文件。我们还简要探讨了 tell() 操作文件的 seek()

不要忘记查看我们的 使用 Python 文件和目录的 ,以加深和巩固您的 Python 知识!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部