Python I / O –打开,读取,写入文件
在本教程中,我们将了解Python I / O,如何打开文件以及如何使用Python读取和写入文件。
Python支持的文件类型
Python支持以下类型的文件
文本文件–以字符形式存储数据的文件。
二进制文件–数据以字节形式存储的文件。对于存储图像,序列化对象很有用。
开启档案
使用内置函数open()打开python中的文件,该函数返回文件对象。如果无法打开文件,则会引发OSError。 open的语法如下。
file_object = open("文件名"," open_mode","缓冲","编码")
参数说明
filename是要打开的文件的路径(绝对路径或者相对于当前工作目录的路径)。
open_mode指定打开文件的模式。它是一个可选参数,默认为" r",表示可以在文本模式下阅读。
buffering指定缓冲策略。 0表示关闭缓冲(仅在二进制模式下允许)
1表示行缓冲(仅在文本模式下可用)
整数> 1表示缓冲区大小(以字节为单位)。
它也是一个可选参数,默认缓冲区大小为4096或者8192字节。
- encoding指定用于对文件进行解码或者编码的编码的名称。仅应在文本模式下使用。
在Python中打开文件的模式
模式 | 说明 |
---|---|
‘r’ | 打开文件以从文件开头开始读取。这是默认模式。 |
‘w’ | 打开文件进行写入。文件中所有现有数据都将被删除 |
‘x’ | 打开以进行独占创建,如果文件已经存在,则失败 |
‘a’ | 打开以将内容追加到现有文件中。如果文件不存在,则会创建一个新文件。 |
‘b’ | 以二进制模式打开 |
‘t’ | 以文本模式打开,这是默认模式。 |
‘+’ | 打开以进行更新(读和写) |
在Python中使用open()函数的一些示例。
# opens file using default mode which is ‘rt’ meaning reading a text file f = open(“abc.txt”) # opens file for writing in binary mode f = open(“abc.txt”, 'wb') # opens file for writing and reading in binary mode f = open(“abc.txt”, 'w+b') # opens file for reading and writing f = open(“abc.txt”, 'r+') # opens file for writing, existing content is deleted f = open(“abc.txt”, 'w')
关闭文档
完成文件I / O操作后,应使用close()方法关闭文件。立即关闭文件会释放该文件使用的所有系统资源。
f =打开(" abc.txt"," a")
文件操作
..
..
f.close()
关闭文件对象后,将无法再访问文件对象。如果要再次使用该文件,则需要使用open()函数再次打开该文件。
添加到文件的Python示例
这是一个以添加模式打开文件并将内容添加到文件末尾的示例。稍后以读取模式打开相同文件以读取文件。
def write_file(fname): try: f = open(fname, 'a') f.write("This is a test file.\n") finally: f.close() def read_file(fname): try: f = open(fname, 'r') str = f.read() print('Content- ', str) finally: f.close() write_file('F:\theitroad\abc.txt') read_file('F:\theitroad\abc.txt')
With Open
在上面的示例中,我们可以看到有很多代码可以确保文件正确关闭。但是也需要try-finally块,以确保始终关闭文件并释放资源,即使引发异常也是如此。
推荐的另一种方法是在使用文件对象时在Python中使用with关键字。通过使用with语句打开文件,即使套件在某个时候引发异常,它在套件完成后也会自动关闭。
使用with的语法如下:
with open(“file name”, “open mode”) as fileobject:
与开放式Python示例一起使用
def read_file(fname): with open(fname, 'r') as f: s = f.read() print('Content- ', s) print('File closed- ', f.closed) read_file('F:\theitroad\abc.txt')
使用f.closed()可以检查文件是否已自动关闭。
Python File方法
这是类io.TextIOBase中的方法的完整列表,该类是文本流的基类。这些是通过以文本模式打开文件来获取文件对象时将使用的方法。
方法 | 描述 |
---|---|
close() | 刷新并关闭此流。 |
closed() | 如果流关闭则为真。 |
fileno() | 返回流的文件描述符(整数) |
flush() | 刷新流的写缓冲区(如果适用)。 |
isatty() | 如果流是交互式的,则返回True |
read(n = -1) | 作为单个str从流中读取并返回最多n个字符。如果n为负或者无,则读取直到EOF。 |
readline(n = -1) | 读取直到换行符或者EOF并返回单个str。如果指定n,则最多读取n个字符。 |
readlines() | 从流中读取并返回行列表。 |
read() | 如果可以从中读取流,则返回True。 |
seek(offset,fromwhere) | 将流位置更改为给定的字节偏移量。 |
seekable() | 如果流支持随机访问,则返回True。 |
tell() | 返回当前流的位置。 |
truncate(size = None) | 将流调整为给定大小(以字节为单位)。如果未指定大小,则调整为当前位置。 |
writable() | 如果流支持写入,则返回True。 |
write(s) | 将字符串s写入流并返回写入的字符数。 |
writelines(lines) | 向流中写入行列表。 |