Python文件读写操作:内置open()函数

文件读写操作:内置open()函数

Python中的open() 方法是用于打开一个文件,如果该文件损坏或者无法打开,会抛出 OSError

完整语法格式:
open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True)

open()函数常用形式是接收两个参数:文件名(file)和模式(mode)

参数说明:

    file: 表示将要打开的文件的路径(绝对路径或者当前工作目录的相对路径)
    mode: 是一个可选字符串,默认值是“mode=r”,意味着当什么值都不传时,文本模式为打开并读取。
            'r' 读取(默认)
            'w' 写入,并覆盖文件源数据
            'x' 创建,如果文件已存在则失败
            'a' 写入,如果文件存在则在末尾追加,追加成功后,会打印出追加了几个字符
            'b' 二进制模式
            't' 文本模式(默认)
            '+' 打开用于更新(读取与写入)
    buffering: 是一个可选的整数,用于设置缓冲策略
    encoding: 是用于解码或者编码文件的编码名称,这只在文本模式下使用
    errors: 是一个可选的字符串参数,用于指定如何处理编码和编码错误。这个不能在二进制模式下使用
    newline: 区分换行符(它仅适用于文本模式)。它可以是 None,'','\n','\r' 和 '\r\n'。
    closefd: 传入的file参数类型
mode值 描述
mode=r 以只读方式打开文件,文件指针会放在文件的开头位置
mode=r+ 打开一个文件用于读写。文件指针将会放在文件的开头
mode=w 以只写方式打开文件,如果文件已存在则打开文件,从开头开始写入,即原有内容会被删除。如果文件不存在,创建新文件
mode=w+ 打开一个文件用于读写。如果文件已存在则打开文件,从开头开始编辑,原有内容会被删除。如果文件不存在,创建新文件
mode=a 追加。如果文件已存在,文件指针会放在文件的结尾。新内容将会被写入到已有内容之后。如果文件不存在,创建新文件写入
mode=a+ 用于读写。如果文件已存在,文件指针会放在文件的结尾。文件打开时是追加模式。如果文件不存在,创建新文件用于读写
mode=rb 二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。一般用于非文本文件如图片等
mode=rb+ 二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等
mode=wb 二进制格式打开一个文件只用于写入。如果文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果文件不存在,创建新文件。一般用于非文本文件如图片等
mode=wb+ 二进制格式打开一个文件用于读写。如果文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。如果文件不存在,创建新文件。一般用于非文本文件如图片等
mode=ab 二进制格式打开一个文件用于追加。如果文件已存在,文件指针会放在文件的结尾。新的内容会被写入到已有内容之后。如果文件不存在,创建新文件进行写入
mode=ab+ 二进制格式打开一个文件用于追加。如果文件已存在,文件指针会放在文件的结尾。如果该文件不存在,创建新文件用于读写

读写文件,有两种方式写入,一个是打开写入再关闭,一个就是上下文管理器的操作使用

一、文件打开写入关闭操作

# 首选是打开文件,并解码操作(解码是为了防止读取出来的数据是乱码)
open_file = open('testing.text', encoding='utf-8')
# 进行读取文件中的数据,并对其使用变量进行接收
read_file = open_file.read()
print(read_file)
# 接收完成后,进行关闭操作
# 如果不执行关闭,不保证数据全部读取或者全部写入
open_file.close()

二、上下文管理器

# 上面说了每次都要执行关闭,不关闭可能会出现读写数据不全的问题,上下文管理器的好处就是数据读写完成后,
# 就会自动执行关闭操作,这样就不会忘记关闭了,也不会担心数据读写不全了,相对来说这样书写代码会更美观
with open('testing.text', encoding='utf-8') as _read:
    read_data = _read.read()
print(read_data)

三、文件的读写方法

# read读取全部
with open('testing.text', encoding='utf-8') as _read:
    read_data = _read.readline()
print(read_data)

# readline读取行(一行一行的读取)
with open('testing.text', encoding='utf-8') as _read:
    read_data = _read.readline()
print(read_data)

# readlines读取后返回的是列表类型
with open('testing.text', encoding='utf-8') as _read:
    read_data = _read.readlines()
print(read_data)

# write写入指定数据
with open('TestData.text', mode='w', encoding='utf-8') as _write:
    read_data = _write.write('hahaha')

# writelines是写入一个字符串的序列值
with open('TestData.text', mode='w', encoding='utf-8') as _write:
    read_data = _write.writelines('55')

以上总结如有不当之处,还请多多赐教,始终相信你的努力,终会在某一天得到回报!!!
Python文件读写操作:内置open()函数_第1张图片

你可能感兴趣的:(python语言)