python写入文件的时候指定编码 python 文件写入_java

Python 以其可读性和多功能性而闻名,提供了用于无缝文件操作的内置函数。无论是处理纯文本还是深入研究以 0 和 1 编码的复杂二进制数据,Python 都提供了一组强大的工具来创建、写入和读取文件。

首先,理解文本文件和二进制文件之间的区别是基础。

  • 在文本文件中,每行以行尾 (EOL) 字符结束,在 Python 中通常表示为“\n”。
  • 二进制文件中没有行终止符,数据以机器可理解的二进制语言存储。

接入方式

在 Python 中,访问模式决定了文件打开后如何使用。它们定义了文件上允许的操作。读取文件的不同访问模式有:

  1. 只写('w'):打开文件进行写入、截断和覆盖现有数据(如果文件已存在)。句柄设置在文件的开头,如果不存在则创建一个新文件。
  2. 写入和读取 ('w+'):启用读取和写入,并截断和覆盖现有数据。句柄位于文件的开头。
  3. Append ('a'):打开文件进行写入,并在必要时创建它。句柄位于末尾,允许在现有内容之后插入数据。

在 Python 中打开文件

我们使用内置的open()函数来打开任何现有或不存在的文件。这里需要注意的一件事是,您是要打开现有文件还是要打开不存在的文件(通过创建文件)取决于您的访问模式。

如果文件不存在,则帮助创建新文件的访问模式是 – w、w+、a、a+

让我们看看如何使用 open 函数打开现有或不存在的文件。

该函数的语法是:



file_object = open(r"file_name", "access_mode")



“r”位于参数之前,以防止文件名中的字符被视为特殊字符。例如,如果文件地址中有“\tapes”,则“\t”可能被视为制表符,并且会引发错误。 “r”代表原始,表示字符串不包含特殊字符。

open 函数为我们提供了一个文件对象来执行操作。可用函数的参数是文件名和您希望打开文件的访问模式。如果文件与程序不在同一目录中,我们可以添加完整的文件路径来代替文件名。

用法:



file1 = open("example.txt", "a+")
file2 = open("E:\\tests\file.txt", "w+")



现在,如果您打开文件,则还必须关闭它。

这里需要注意的另一个重要事项是,在处理文本文件时,建议您还指定其编码,如下所示:



file1 = open("example.txt", "a+", encoding="utf-8")



在 Python 中关闭文件

我们使用内置函数close()来关闭文件。该函数关闭文件并释放该文件占用的内存空间。如果不再需要该文件或在其他访问模式下需要该文件,则可以使用关闭函数。

用法:



file1 = open("example.txt", "w+", encoding="utf-8")
# do something
file1.close()



就是这样!

为了保证文件关闭,即使在文件处理期间引发一些异常,更好的方法是使用try ... finally块。首先执行 try 块中的任何代码。如果出现任何错误,它将停止执行 try 块代码并移至最终块。



try:
  file_obj = open("example.txt", "r", encoding="utf-8")
  # do something with the file
finally:
  file_obj.close()



用 Python 写入文件

我们有多种访问模式来在 Python 中打开现有文本文件并写入它,具体取决于我们的需要。即使文本文件不存在,我们也可以使用w或a访问模式创建一个文本文件,然后写入它。

写入文本文件

Python中有两个函数可以帮助我们写入文本文件:

1.Python中的write()函数

无论您将字符串作为参数提供给该函数,它都会将其作为单行写入文本文件中。同样,现有内容是否会被截断取决于访问模式。如果您使用w模式,内容将被截断,并且您的字符串将被写入。

现在,让我们看一个例子。我们最初没有任何名为writing.txt的现有文件。我们使用w模式创建它。一旦我们打开新文件,它就是空的。然后我们将向其中写入内容。



file_obj = open("writing.txt", "w")



这里,file_obj是文件对象。我们正在w访问模式下打开一个名为writing.txt的文件。如果该文件不存在,则会创建该文件,因为我们使用了w访问模式。

我们现在可以这样写:



file_obj.write("This is how you write to a file")
file_obj.write("Now this will be written to another line")



由于我们使用open()方法而不是open()打开文件,因此我们还需要关闭文件。

让我们使用下面的程序看看我们的文件现在是什么样子。



{"output": "This is how you write to a file /n
 Now this will be written to another line "}
print(file_obj.read())
file_obj.close()



不存在的文件现在包含以上两行内容。让我们再次尝试写入文件;这只是另一条线。由于我们之前关闭了该文件,因此我们需要再次打开它。



file = open("writing.txt", "w")



注意我们如何使用w访问模式。文件writing.txt当前存在。上次我们使用open函数打开该文件时,该文件不存在。我们创建了它,然后打开了它。这次,它只是以写入模式打开,因为它已经存在。



file.write("Where do you think this will be written in the file?")
file.write("Obviously, the initial contents will be overwritten with these two lines")
print(file.read())
file.close()



运行此代码后,您将看到以下文件内容:



Where do you think this will be written in the file?
Obviously, the initial contents will be overwritten with these two lines.



2. Python 中的 writelines() 函数

对我们想要写入文件的每一行不断地使用file.write()可能会变得很棘手。因此,我们可以使用writelines()函数。

使用它的一个简单方法是提供一个字符串列表作为writelines()的参数。



lines = ["line1", "line2", "line3"]
file_obj.writelines(lines)



请注意,如果使用w或访问模式打开文件,则只能写入文件而不能读取文件。同理,如果以r模式打开文件,则只能读取而不能写入。如果您希望同时执行这两个操作,请使用a+模式。

写入二进制文件

在学习了如何从二进制文件中读取数据后,我相信您也知道如何写入它。我们使用wb模式来写入二进制文件。

例子



f = open("binfile.bin", "wb")
nums = [1, 2, 3, 4, 5]
arr = bytearray(nums)
f.write(arr)
f.close()



人类可读的数据不以二进制形式存在。因此,在处理诸如 1、2、3、4 和 5 之类的数字数组时,有必要将它们转换为字节表示形式,然后再将它们存储在二进制文件中。为了实现这一点,使用了bytearray()函数。

您现在已经了解了有关使用 Python 写入文件所需的所有信息。要编译 Python 代码,请使用此在线编译器。

附加到文件

在 Python 中向文件追加数据是一项普通操作,尤其是当您想要添加新信息而不覆盖现有内容时。在 Python 中,通过利用 open() 函数并将模式参数设置为“a”(追加)可以轻松实现此目的。

让我们考虑一下文件的初始内容:



Where do you think this will be written in the file?
Obviously, the initial contents will be overwritten with these two lines.



如果不采取预防措施,尝试直接写入文件将导致覆盖这些行。但是,使用 open() 函数中的 'a' 模式,我们可以将新数据附加到文件末尾,而不影响现有内容。

以下是演示如何将数据附加到文件的示例代码片段:



file = open("writing.txt", "a")
file.write("This way, I will preserve the existing contents in the file")
file.close()



运行代码后,文件将如下所示:



Where do you think this will be written in the file?
Obviously, the initial contents will be overwritten with these two lines
This way, it will preserve the existing contents in the file



在 Python 中使用 for 语句写入文件

在 Python 中,使用 for 语句是将数据写入文件的一种强大且简洁的方法,尤其是在处理列表或字符串等可迭代对象时。这种方法使您能够迭代可迭代中的每个元素,然后将其写入文件。

考虑以下示例,其中我们有一个项目列表,并且我们希望将每个项目写入新行的文件中:



items_to_write = ["Item 1", "Item 2", "Item 3", "Item 4"]
file = open("output.txt", "w")

for item in items_to_write:
    file.write(item + "\n")

file.close()



执行此代码后,文件“output.txt”的内容将是:



Item 1
Item 2
Item 3
Item 4



  • 当您有一个想要按顺序写入文件的数据集合时,此方法非常有用。
  • 该方法不限于列表。它可以适用于各种可迭代对象。

结论

了解如何用 Python 写入文件后,以下是一些对您有帮助的关键点:

  • 我们使用write()方法将单个字符串插入到文本文件中,并使用writelines()方法将多个字符串插入到文本文件中。
  • 我们必须首先将输入转换为二进制形式以写入二进制文件。
  • 要将数字数组转换为二进制数组,我们可以使用bytearray()函数。