在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+' 用于以写入和读取模式打开文件,但如果该文件在计算机系统中不存在,则它会创建新文件。
注意:要了解有关创建文件的更多信息,请单击此处。
从文件中读取
有三种方法可以从文本文件中读取数据。
- read():以字符串的形式返回读取的字节。读取 n 个字节,如果没有指定 n,则读取整个文件。
File_object.read([n])
- readline():读取文件的一行,以字符串形式返回。指定n,最多读取n个字节。但是,不会读取超过一行,即使 n 超过了行的长度。
File_object.readline([n])
- 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']
注意:要了解有关从文件读取的更多信息,请单击此处。
写入文件
有两种方法可以写入文件。
- write():在文本文件的单行中插入字符串str1。
File_object.write(str1) - 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。
示例:假设文件夹中包含的文件是:
我们想从上面的文件夹中删除 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)
输出:
注意:要了解有关删除文件的更多信息,请单击此处。