📜  在Python中与文件交互

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

在Python中与文件交互

Python也支持文件处理,并允许用户处理文件,即读取、写入、创建、删除和移动文件,以及许多其他文件处理选项,以对文件进行操作。文件处理的概念已经延伸到其他各种语言,但实现要么复杂要么冗长,但与Python的其他概念一样,这里的这个概念也简单而简短。

本文的主要重点将放在以下主题上。

  • 创建文件
  • 从文件中读取
  • 写入文件
  • 移动文件
  • 删除文件

创建文件

使用文件实例的第一步是打开一个磁盘文件。在任何计算机语言中,这意味着在您的代码和外部文件之间建立通信链接。为了创建一个新文件,I/O 类提供了成员函数open()

句法:

open(filename, mode)

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

  • 只读 ('r'):打开文本文件进行阅读。句柄位于文件的开头。如果文件不存在,则引发 I/O 错误。这也是打开文件的默认模式。
  • 读写('r+'):打开文件进行读写。句柄位于文件的开头。如果文件不存在,则引发 I/O 错误。
  • 只写('w'):打开文件进行写入。对于现有文件,数据将被截断并覆盖。句柄位于文件的开头。如果文件不存在,则创建文件。
  • Write and Read ('w+'):打开文件进行读写。对于现有文件,数据将被截断并覆盖。句柄位于文件的开头。
  • Append Only ('a'):打开文件进行写入。如果文件不存在,则创建该文件。句柄位于文件的末尾。正在写入的数据将插入到末尾,在现有数据之后。
  • Append and Read ('a+'):打开文件进行读写。如果文件不存在,则创建该文件。句柄位于文件的末尾。正在写入的数据将插入到末尾,在现有数据之后。

示例:假设文件夹如下所示 -

创建文件

# Open function to open the file "MyFile1.txt"  
# (same directory) in append mode and 
file1 = open("MyFile.txt","w+") 

输出:

创建文件

在上面的例子中, open()函数和访问模式 'w+' 用于以写入和读取模式打开文件,但如果该文件在计算机系统中不存在,则它会创建新文件。

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

从文件中读取

有三种方法可以从文本文件中读取数据。

  1. read():以字符串的形式返回读取的字节。读取 n 个字节,如果没有指定 n,则读取整个文件。
    File_object.read([n])
  2. readline():读取文件的一行,以字符串形式返回。指定n,最多读取n个字节。但是,不会读取超过一行,即使 n 超过了行的长度。
    File_object.readline([n])
  3. readlines():读取所有行并将它们作为每行返回一个列表中的字符串元素。
    File_object.readlines()

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

# Program to show various ways to  
# read data from a file.  
    
# Creating a file 
file1 = open("myfile.txt", "w") 
L = ["This is Delhi \n", "This is Paris \n", "This is London \n"] 
    
# Writing data to a file 
file1.write("Hello \n")  
file1.writelines(L) 
file1.close()  # to change file access modes 
    
file1 = open("myfile.txt", "r+") 
    
print("Output of Read function is ") 
print(file1.read()) 
print() 
    
# seek(n) takes the file handle to the nth 
# bite from the beginning.  
file1.seek(0) 
    
print("Output of Readline function is ") 
print(file1.readline()) 
print() 
    
file1.seek(0) 
    
# To show difference between read and readline  
print("Output of Read(9) function is ") 
print(file1.read(9)) 
print() 
    
file1.seek(0) 
    
print("Output of Readline(9) function is ") 
print(file1.readline(9)) 
print() 
    
file1.seek(0) 
    
# readlines function  
print("Output of Readlines function is ") 
print(file1.readlines()) 
print() 
file1.close()  

输出:

Output of Read function is
Hello
This is Delhi
This is Paris
This is London


Output of Readline function is
Hello


Output of Read(9) function is
Hello
Th

Output of Readline(9) function is
Hello


Output of Readlines function is
['Hello \n', 'This is Delhi \n', 'This is Paris \n', 'This is London \n']

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

写入文件

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

  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

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

移动文件

这可以使用shutil 模块中的shutil.move()函数来实现。 shutil.move()方法 递归地将文件或目录(源)移动到另一个位置(目标)并返回目标。如果目标目录已经存在,则将 src 移动到该目录中。如果目标已经存在但不是目录,那么它可能会根据os.rename()语义被覆盖。

示例:假设目录如下所示 -

蟒蛇移动文件

G内:

蟒蛇移动文件

# Python program to move 
# files
    
    
import shutil 
    
# Source path 
source = "D:\Pycharm projects\gfg\Test\Test4.txt"
    
# Destination path 
destination = "D:\Pycharm projects\gfg\Test\G"
    
# Move the content of 
# source to destination 
dest = shutil.move(source, destination) 
    
# print(dest) prints the  
# Destination of moved directory 

输出:

蟒蛇移动文件

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

删除文件

Python中的os.remove()方法用于删除或删除文件路径。此方法不能删除或删除目录。如果指定的路径是目录,则该方法将引发 OSError。

示例:假设文件夹中包含的文件是:

python删除文件

我们想从上面的文件夹中删除 file1。下面是实现。

# Python program to explain os.remove() method   
        
# importing os module   
import os  
      
# File name  
file = 'file1.txt'
      
# File location  
location = "D:/Pycharm projects/GeeksforGeeks/Authors/Nikhil/"
      
# Path  
path = os.path.join(location, file)  
      
# Remove the file  
# 'file.txt'  
os.remove(path)  

输出:

python删除文件

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