版权声明:如果对以下观点有想法,欢迎评论交流。 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)