Python3 File

版权声明:如果对以下观点有想法,欢迎评论交流。 https://blog.csdn.net/weixin_43378248/article/details/87903222

一、open() 方法

  • 用于打开一个文件,并返回文件对象,如果该文件无法被打开,会抛出 OS Error
  • 一定要保证关闭文件对象,即调用 file.close() 方法
# 一般形式
open(file, mode='r')
# 完整格式
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
序号 参数 描述
01 file 必选,相对或者绝对路径
02 mode 可选,文件打开模式
03 buffering 设置缓冲
04 encoding 一般使用 UTF8
05 errors 报错级别
06 newline 区分换行符
07 closefd 传入的 file 参数类型
08 opener
序号 模式 描述
01 t 文本模式 (默认)
02 x 写模式,新建一个文件,如果该文件已存在,则会报错
03 b 二进制模式
04 + 打开一个文件进行更新 (可读可写)
05 U 通用换行模式 (不推荐)
06 r 打开一个文件只用于 只读 。文件指针将会放在文件的 开头
07 rb 二进制格式 打开一个文件用于 只读 。文件指针将会放在文件的 开头
08 r+ 打开一个文件用于 读写。文件指针将会放在文件的 开头
09 rb+ 二进制格式打开一个文件用于 读写 。文件指针将会放在文件的 开头
10 w 打开一个文件只用于 写入 。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
11 wb 二进制格式 打开一个文件只用于 写入 。如果该文件 已存在 则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件 不存在 ,创建新文件
12 w+ 打开一个文件用于 读写。如果该文件 已存在 则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件 不存在 ,创建新文件
13 wb+ 二进制格式 打开一个文件用于 读写。如果该文件 已存在 则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件 不存在,创建新文件
14 a 打开一个文件用于 追加 。如果该文件已存在,文件指针将会放在文件的 结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件 不存在 ,创建新文件进行 写入
15 ab 二进制格式 打开一个文件用于 追加。如果该文件 已存在,文件指针将会放在文件的 结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件 不存在 ,创建新文件进行 写入
16 a+ 打开一个文件用于 读写 。如果该文件 已存在 ,文件指针将会放在文件的 结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于 读写
17 ab+ 二进制格式 打开一个文件用于 追加 。如果该文件 已存在 ,文件指针将会放在文件的 结尾 。如果该文件 不存在 ,创建新文件用于 读写

二、文件对象方法

序号 模式 描述
01 file.close() 关闭文件 。关闭后文件不能再进行读写操作
02 file.flush() 刷新文件内部缓冲 。直接把内部缓冲区的数据 立刻写入文件 ,同时清空缓冲区
03 file.fileno() 返回 一个整型的文件描述符,可用于底层操作系统的 I/O 操作
04 file.isatty() 检测 文件 是否 连接到一个终端设备,如果是返回 True ,否则返回 False
05 file.next(iterator) 返回 文件的 下一行 ,如果到达结尾 (EOF) ,则触发 StopIteration
06 file.read([size]) 返回 从文件 读取指定的字节数 ,如果未给定或为负,则读取所有
07 file.readline([sizeint]) 返回 从文件 读取整行 (指定的字节数) ,包括换行符
08 file.readlines([sizeint]) 返回 列表所有行 (直到结束符 EOF)
09 file.seek(offset, whence) 移动文件读取指针到指定位置
10 file.tell() 返回 文件的 当前位置 ,即文件指针当前位置
11 file.truncate([size]) 截断 从文件的首行首字符到指定大小的字符串 ,无指定表示从当前位置截断
12 file.write(str) 返回 写入的字符长度,并将字符串写入文件
13 file.writelines(sequence) 向文件写入 一个序列字符串列表 ,如果需要换行,则要每行要加上换行符
# 该实例演示替换文件文本
def file_replace(file_name, rep_word, new_word):
    f_read = open(file_name)

    content = []
    count = 0

    for eachline in f_read:
        if rep_word in eachline:
            count += eachline.count(rep_word)
            eachline = eachline.replace(rep_word, new_word)
        content.append(eachline)    

    decide = input('\n文件 %s 中共有%s个【%s】\n您确定要把所有的【%s】替换为【%s】吗?\n【YES/NO】:' \
                   % (file_name, count, rep_word, rep_word, new_word))

    if decide in ['YES', 'Yes', 'yes']:
        f_write = open(file_name, 'w')
        f_write.writelines(content)
        f_write.close()

    f_read.close()


file_name = input('请输入文件名:')
rep_word = input('请输入需要替换的单词或字符:')
new_word = input('请输入新的单词或字符:')
file_replace(file_name, rep_word, new_word)

猜你喜欢

转载自blog.csdn.net/weixin_43378248/article/details/87903222