Python3 File

一、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)
序号参数描述
01file必选,相对或者绝对路径
02mode可选,文件打开模式
03buffering设置缓冲
04encoding一般使用 UTF8
05errors报错级别
06newline区分换行符
07closefd传入的 file 参数类型
08opener
序号模式描述
01t文本模式 (默认)
02x写模式,新建一个文件,如果该文件已存在,则会报错
03b二进制模式
04+打开一个文件进行更新 (可读可写)
05U通用换行模式 (不推荐)
06r打开一个文件只用于 只读 。文件指针将会放在文件的 开头
07rb二进制格式 打开一个文件用于 只读 。文件指针将会放在文件的 开头
08r+打开一个文件用于 读写。文件指针将会放在文件的 开头
09rb+二进制格式打开一个文件用于 读写 。文件指针将会放在文件的 开头
10w打开一个文件只用于 写入 。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
11wb二进制格式 打开一个文件只用于 写入 。如果该文件 已存在 则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件 不存在 ,创建新文件
12w+打开一个文件用于 读写。如果该文件 已存在 则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件 不存在 ,创建新文件
13wb+二进制格式 打开一个文件用于 读写。如果该文件 已存在 则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件 不存在,创建新文件
14a打开一个文件用于 追加 。如果该文件已存在,文件指针将会放在文件的 结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件 不存在 ,创建新文件进行 写入
15ab二进制格式 打开一个文件用于 追加。如果该文件 已存在,文件指针将会放在文件的 结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件 不存在 ,创建新文件进行 写入
16a+打开一个文件用于 读写 。如果该文件 已存在 ,文件指针将会放在文件的 结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于 读写
17ab+二进制格式 打开一个文件用于 追加 。如果该文件 已存在 ,文件指针将会放在文件的 结尾 。如果该文件 不存在 ,创建新文件用于 读写

二、文件对象方法

序号模式描述
01file.close()关闭文件 。关闭后文件不能再进行读写操作
02file.flush()刷新文件内部缓冲 。直接把内部缓冲区的数据 立刻写入文件 ,同时清空缓冲区
03file.fileno()返回 一个整型的文件描述符,可用于底层操作系统的 I/O 操作
04file.isatty()检测 文件 是否 连接到一个终端设备,如果是返回 True ,否则返回 False
05file.next(iterator)返回 文件的 下一行 ,如果到达结尾 (EOF) ,则触发 StopIteration
06file.read([size])返回 从文件 读取指定的字节数 ,如果未给定或为负,则读取所有
07file.readline([sizeint])返回 从文件 读取整行 (指定的字节数) ,包括换行符
08file.readlines([sizeint])返回 列表所有行 (直到结束符 EOF)
09file.seek(offset, whence)移动文件读取指针到指定位置
10file.tell()返回 文件的 当前位置 ,即文件指针当前位置
11file.truncate([size])截断 从文件的首行首字符到指定大小的字符串 ,无指定表示从当前位置截断
12file.write(str)返回 写入的字符长度,并将字符串写入文件
13file.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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值