Python中的文件对象?


在Python中,当我们尝试读取或写入文件时,不需要导入任何库,因为它是由系统原生处理的。

open()函数打开一个文件并返回一个文件对象。**文件对象**包含方法和属性,这些方法和属性稍后可用于检索信息或操作已打开的文件。

文件操作

文件是磁盘上用于存储相关信息的命名位置,由于文件具有名称和位置,因此它存储在硬盘中。在Python中,文件操作按以下顺序执行:

  • 打开文件。
  • 读取或写入操作。
  • 关闭文件。

使用'open()'函数打开文件

要同时打开一个文件进行读取和写入,必须使用内置的**open()**函数。**open()**函数使用两个参数。第一个是文件名,第二个是模式(读取或写入)。在Python中打开文件对象的语法如下:

File_obj = open("filename", "mode")

Python文件模式

打开文件后,可以指定文件模式。例如,如果要将追加模式**"a"**添加到文件,则写入**"w"**或读取**"r"**。此外,可以选择以二进制模式或文本格式打开文件。以下是open()函数支持的不同模式:

模式 描述
‘r’ 打开文件以进行读取。(默认)
‘w’ 打开文件以进行写入。如果文件不存在,则创建一个新文件;如果文件存在,则截断文件。
‘x’ 打开文件以进行独占创建。如果文件已存在,则操作失败。
‘a’ 打开以在文件末尾追加,而不截断它。如果文件不存在,则创建一个新文件。
‘t’ 以文本模式打开。(默认)
‘b’ 以二进制模式打开。
‘+’ 打开文件以进行更新(读取和写入)

创建文本文件

让我们使用任何文本编辑器在Python中创建一个简单的文本文件。在下面的示例中,将在当前工作目录中创建一个新文件,并在打开新创建的文件时。

# Create a text file named "textfile.txt" in your current working directory
f = open("textfile.txt", "w")
# above will create a file named textfile.txt in your default directory
f.write("Hello, Python")

f.write("\nThis is our first line")

f.write("\nThis is our second line")

f.write("\nWhy writing more?, Because we can :)")

f.close()

输出

读取文本文件

有多种方法可以在Python中读取文本文件,其中一些方法如下所示。

  • 提取字符串的所有字符

  • 读取一定数量的字符

  • 逐行读取文件

  • 遍历文件对象

  • 分割文本文件中的行

提取字符串的所有字符

如果您想提取包含文件中所有字符的字符串,可以使用以下方法

file.read()

示例

下面是一个实现上述语法的程序

f = open("textfile.txt", "r")
f.read()

输出

'Hello, Python\nThis is our first line\nThis is our second line\nWhy writing more?, Because we can :)'

读取一定数量的字符

如果您想从文件中读取字符串中一定数量的字符,可以使用如下所示的方法:

f = open("textfile.txt", "r")
print(f.read(13))

输出

Hello, Python

逐行读取文件

但是,如果您想逐行读取文件,则可以使用readline()函数。

示例

f = open("textfile.txt", "r")
print(f.readline())
print(f.readline())
print(f.readline())
print(f.readline())

输出

Hello, Python

This is our first line

This is our second line

Why writing more?, Because we can :)

遍历文件对象

如果您想以最结构化和高效的方式读取或返回文件中的所有行,可以使用循环遍历方法。

f = open("textfile.txt", "r")
for line in f:
   print(line)

输出

Hello, Python

This is our first line

This is our second line

Why writing more?, Because we can :)

分割文本文件中的行

我们可以使用Python的split()函数分割从文本文件中获取的行。我们可以使用任何你选择的字符来分割文本,它可以是空格字符、冒号或其他字符。

with open("textfile.txt", "r") as f:
data = f.readlines()
for line in data:
words = line.split()
print(words)

输出

['There', 'are', 'tons', 'to', 'reason', 'to', "'fall", 'in', 'love', 'with', "PYTHON'"]
['See,', 'i', 'have', 'added', 'one', 'more', 'line', ':).']
['Hello,', 'Python-Here', 'i', 'come', 'once', 'again!']

写入文件

写入文件很简单,您只需打开文件并传递要写入文件的文本即可。我们可以使用open()方法将数据追加到现有文件中。使用EOL字符在写入数据到文件后开始新的一行。

示例

f = open("textfile.txt", "w")
f.write("There are tons to reason to 'fall in love with PYTHON'")
f.write("\nSee, i have added one more line :).")

f.close()
f = open("textfile.txt", "r")
for line in f:
   print(line)

输出

There are tons to reason to 'fall in love with PYTHON'
See, i have added one more line :).

关闭文件

完成文件操作后,必须使用f.close()命令结束操作。这样,我们就完全关闭了文件,终止了所有正在使用的资源,并释放了它们以供系统在其他地方使用。

示例

f = open("textfile.txt", "r")
f.close()
f.readlines()

输出

关闭文件后,任何尝试使用文件对象的尝试都会引发错误。

Traceback (most recent call last):
File "<pyshell#95>", line 1, in <module>
f.readlines()
ValueError: I/O operation on closed file.

使用"with"语句

with语句可以与文件对象一起使用。使用这两个(with语句和文件对象),我们在程序中获得了更简洁的语法和异常处理。

另一个优点是,一旦我们完成文件操作,任何打开的文件都会自动关闭。

语法

with open(“filename”) as file:

示例

在此示例中,文件在with块结束时自动关闭,因此无需显式调用close()方法。

with open("example.txt", "w") as file:
   file.write("This is an example using the with statement.")
   print ("File closed successfully!!")

输出

File closed successfully!!

更新于:2024年10月9日

5K+ 次浏览

启动你的职业生涯

完成课程后获得认证

开始学习
广告