Python I / O –打开,读取,写入文件

时间:2020-01-09 10:44:19  来源:igfitidea点击:

在本教程中,我们将了解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)向流中写入行列表。