首页 > 编程语言 >【Python】open及file函数详解

【Python】open及file函数详解

时间:2023-01-07 22:23:37浏览次数:48  
标签:__ 文件 Python 写入 file test open

open 函数

python 内置函数,一般用于本地文件的读写操作,创建一个 file 对象,调用file()方法进行读写。

  Tips: file对象需要调用close

# 参数
@params:file: str | bytes | PathLike[str] | PathLike[bytes] | int,  #要打开的文件的名称/或文件路径+文件名称
@params:mode: str,  #打开文件的模式
@params:buffering: int = ...,  #设置缓冲策略 ,0关闭缓冲(二进制),1行缓冲(文本模式),>1 表示缓冲大小,负值/无为默认缓冲机制
@params:encoding: str | None = ...,  #打开文件所用的编码,可选utf-8、ascii、gbk等
@params:errors: str | None = ...,  #编解码报错的处理模式(文本模式),可选值有strict(报错)、ignore(忽略)、replace(?替代)等
@params:newline: str | None = ...,  #换行符设置(文本模式),包括None、"\r"、"\n"、"\r\n"
@params:closefd: bool = ...,  #控制file参数的传入值类型,False打开的文件描述符
@params:opener: (str, int) -> int | None = ...  #设置自定义开启器,即可调用函数传递,使用此参数时closefd=False

 

mode取值

t   文本模式,默认值
x   新建文件写入,存在则报错
b   二进制
+   可读可写,即更新文件

r   打开只读文件
r+   打开文件进行读写
w   仅写入,存在则清空内容写入,不存在则创建
w+   读写,存在则清空内容写入,不存在则创建
a   仅追加,存在则在末尾追加,不存在则创建
a+   读写,存在则在末尾追加,不存在则创建

 

file常用方法

file.close():关闭文件。关闭后文件不能再进行读写操作。
file.flush():刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
file.fileno():返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
file.isatty():如果文件连接到一个终端设备返回 True,否则返回 False。
file.next():返回文件下一行。
file.read([size]):从文件读取指定的字节数,如果未给定或为负则读取所有。
file.readline([size]):读取整行,包括 "\n" 字符。
file.readlines([sizeint]):读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。
file.seek(offset[, whence]):设置文件当前位置
file.tell():返回文件当前位置。
file.truncate([size]):截取文件,截取的字节通过size指定,默认为当前文件位置。
file.write(str):将字符串写入文件,返回的是写入的字符长度。
file.writelines(sequence):向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

 

 

示例

容错

读写时都有可能产生IOError, 使用try..finally.. 是为了保证出错时可以正确关闭文件

try:
    f = open('test.txt', 'r')
    print(f.read())
finally:
    if f:
        f.close()

 

 

读文件

if __name__ == "__main__":
    file = "test.txt"

    f = open(file, "r")
    t = f.read()
    f.close()
    print(t)

 

执行结果

 

追加

if __name__ == "__main__":
    file = "test.txt"
    content = """start
        1
        2
        3
        test
        enf
    """

    f = open(file, "a+")
    f.write(content)
    f.close()

 

执行结果:

 

写文件

if __name__ == "__main__":
    file = "test.txt"
    content = """start
        1
        2
        3
        test
        enf
    """

    f = open(file, "r+")
    f.write(content)
    f.close()

 

 

 

 执行结果:

 

无文件则创建

if __name__ == "__main__":
    file = "test.xlsx"
    content = """start
        1
        2
        3
        test
        enf
    """

    f = open(file, "w+")

    f.write(content)
    f.close()

 

执行结果:

 

 

 

 

 拓展

 

 

 

 with open() 

  用来打开本地文件的,他会在使用完毕后,自动调用close关闭文件

file = "test.xlsx"

    with open(file, 'r') as f:
        print(f.read())

 

执行结果

 

 

同理

if __name__ == "__main__":
    file = "test.txt"
    content = "test1"
    ct = "\ntest2"

    with open(file, 'w+') as f:     # 覆盖写入
        f.write(content)
    with open(file, 'a+') as f:     # 追加写入
        f.write(ct)
    with open(file, 'r+') as f:     # 读
        print(f.read())

 

执行结果

 

标签:__,文件,Python,写入,file,test,open
From: https://www.cnblogs.com/phoenixy/p/17033635.html

相关文章