使用 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 知识!
发表评论 取消回复