📜  在Python中写入文件

📅  最后修改于: 2022-05-13 01:55:25.053000             🧑  作者: Mango

在Python中写入文件

Python提供了用于创建、写入和读取文件的内置函数。在Python中可以处理两种类型的文件,普通文本文件和二进制文件(用二进制语言编写,0 和 1)。

  • 文本文件:在这种类型的文件中,每一行文本都以一个叫做 EOL(End of Line)的特殊字符结束,在Python中默认是字符('\n')。
  • 二进制文件:在这种类型的文件中,行没有结束符,数据在转换成机器可以理解的二进制语言后存储。

注意:要了解有关文件处理的更多信息,请单击此处。

访问方式

访问模式控制打开文件中可能的操作类型。它指的是文件打开后将如何使用。这些模式还定义了文件句柄在文件中的位置。文件句柄就像一个游标,它定义了必须从哪里读取或写入文件中的数据。读取文件的不同访问模式是 -

  1. Write Only ('w') :打开文件进行写入。对于现有文件,数据将被截断并覆盖。句柄位于文件的开头。如果文件不存在,则创建文件。
  2. Write and Read ('w+') :打开文件进行读写。对于现有文件,数据将被截断并覆盖。句柄位于文件的开头。
  3. Append Only ('a') :打开文件进行写入。如果文件不存在,则创建该文件。句柄位于文件的末尾。正在写入的数据将插入到末尾,在现有数据之后。

注意:要了解有关访问模式的更多信息,请单击此处。

打开文件

它是使用open()函数完成的。此函数不需要导入任何模块。

句法:

File_object = open(r"File_Name", "Access_Mode")

该文件应与Python程序文件存在于同一目录中,否则文件的完整地址应写在文件名的位置。

注意: r放在文件名之前,以防止文件名字符串中的字符被视为特殊字符。例如,如果文件地址中有 \temp,则 \t 被视为制表字符,并且由于地址无效而引发错误。 r 使字符串原始,也就是说,它告诉字符串没有任何特殊字符。如果文件在同一目录中并且没有放置地址,则可以忽略 r。

# Open function to open the file "MyFile1.txt"  
# (same directory) in read mode and 
file1 = open("MyFile.txt", "w") 
    
# store its reference in the variable file1  
# and "MyFile2.txt" in D:\Text in file2 
file2 = open(r"D:\Text\MyFile2.txt", "w+") 

这里,file1 被创建为 MyFile1 的对象,file2 被创建为 MyFile2 的对象。

关闭文件

close()函数关闭文件并释放该文件获取的内存空间。它在不再需要文件或要以不同的文件模式打开时使用。

句法:

File_object.close()
# Opening and Closing a file "MyFile.txt" 
# for object name file1. 
file1 = open("MyFile.txt", "w") 
file1.close() 

写入文件

有两种方法可以写入文件。

  1. write() :在文本文件的单行中插入字符串str1。
    File_object.write(str1)
    
  2. writelines() :对于字符串元素的列表,每个字符串都插入到文本文件中。用于一次插入多个字符串。
    File_object.writelines(L) for L = [str1, str2, str3] 
    

注意: '\n'被视为两个字节的特殊字符。

例子:

# Python program to demonstrate
# writing to file
  
# Opening a file
file1 = open('myfile.txt', 'w')
L = ["This is Delhi \n", "This is Paris \n", "This is London \n"]
s = "Hello\n"
  
# Writing a string to file
file1.write(s)
  
# Writing multiple strings
# at a time
file1.writelines(L)
  
# Closing file
file1.close()
  
# Checking if the data is
# written to file or not
file1 = open('myfile.txt', 'r')
print(file1.read())
file1.close()

输出:

Hello
This is Delhi
This is Paris
This is London

附加到文件

当文件以追加模式打开时,句柄位于文件末尾。正在写入的数据将插入到末尾,在现有数据之后。让我们看下面的示例来阐明写入模式和附加模式之间的区别。

# Python program to illustrate
# Append vs write mode
file1 = open("myfile.txt", "w")
L = ["This is Delhi \n", "This is Paris \n", "This is London \n"]
file1.writelines(L)
file1.close()
  
# Append-adds at last
file1 = open("myfile.txt", "a")  # append mode
file1.write("Today \n")
file1.close()
  
file1 = open("myfile.txt", "r")
print("Output of Readlines after appending")
print(file1.read())
print()
file1.close()
  
# Write-Overwrites
file1 = open("myfile.txt", "w")  # write mode
file1.write("Tomorrow \n")
file1.close()
  
file1 = open("myfile.txt", "r")
print("Output of Readlines after writing")
print(file1.read())
print()
file1.close()

输出:

Output of Readlines after appending
This is Delhi
This is Paris
This is London
Today


Output of Readlines after writing
Tomorrow

带声明

Python中的with语句用于异常处理,以使代码更简洁、更具可读性。它简化了文件流等公共资源的管理。与上述实现不同,使用 with 语句时无需调用file.close()with语句本身确保正确获取和释放资源。

句法:

with open filename as file:
# Program to show various ways to
# write data to a file using with statement
  
L = ["This is Delhi \n", "This is Paris \n", "This is London \n"]
  
# Writing to file
with open("myfile.txt", "w") as file1:
    # Writing data to a file
    file1.write("Hello \n")
    file1.writelines(L)
  
# Reading from file
with open("myfile.txt", "r+") as file1:
    # Reading form a file
    print(file1.read())

输出:

Hello
This is Delhi
This is Paris
This is London

注意:要了解有关 with 声明的更多信息,请单击此处。