'''
r 表示只读
rb 表示以二进制的形式打开文件
w 只写 会将源文件内的内容全部清除再重新写入过
wb 只写,以二进制形式将内容写入
a 写操作,,追加内容进行写入,,即写在文件最后面
ab 以二进制形式将内容写到原文件内容最后面
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。 先写再读的话,读到的是没有被写入覆盖的原文件内容
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 只
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,先写再读
即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。先写再读
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
带了b就代表以二进制形式对文件进行读写操作,在open()函数里面就不用指定encoding了
'''
# f = open(file='文件读写操作的实验数据.txt', mode='r', encoding='utf-8') # 这里的编码要与要打开的文件编码一致
# content = f. read() # 通过read()函数读取
# print(content)
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='rb') # 这里的编码要与要打开的文件编码一致
# content = f. read() # 通过read()函数读取
# print(content)
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='w', encoding='utf-8')
# f.write("这是一次写入文件的实验")
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='wb')
# f.write('这是一次追加写入文件的实验'.encode('utf-8')) # 以byte的进行将内容写入文件(即二进制形式)
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='a', encoding='utf-8')
# f.write('\n第二次追加写入')
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='ab')
# f.write('\n第三次追加写入,以二进制形式'.encode('utf-8'))
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='r+', encoding='utf-8')
# print(f.read())
# f.write("r+写入实验")
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='rb+')
# print(f.read())
# f.write("\nr+写入实验".encode('utf-8'))
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='w+', encoding='utf-8')
# f.write("这是一次写入文件的实验")
# f.seek(0) # 将文件文件指针定位于开头(因为使用w写的时候会清除内容在写,所以写完后文件指针在末尾)
# print(f.read())
# f.close()
# f = open(file='文件读写操作的实验数据.txt', mode='a+', encoding='utf-8')
# f.write('\n第二次追加写入')
# f.seek(0) # 写完再读的时候,要讲文件文件指针置为0
# print(f.read())
# f.close()
# function 功能详解
# f = open(file='文件读写操作的实验数据.txt', mode='r+', encoding='utf-8')
# f.seek(3) # 可以将文件指针定位到指定长度的字节后 注意:是按照字节长度定位的而不是字符 一个utf-8由三个字节组成
# f.tell() # 获得文件指针的位置
# f.readable() # 是否可读
# line = f.readline() # 一行一行读取
# line = f.readlines() # 每一行当成列表中的一个元素,添加到列表中
# f.truncate(6) # 截取文件操作,即将文件从文件指针位置开始截取指定长度的字节
# print(line)
# print(f.read())
# content = f.read(3) # read()函数中可以指定读取的字符数
# print(content)
# lis = f.readlines()
# print(lis[1], lis[0])
# f.close()
# 一般打开文件使用with 文件会自动关闭,不需要手动使用close关闭
# 可以同时打开多个文件
# 修改文件操作, 在python中并没有提供修改文件的操作,我们对文件进行修改操作就是将文件先用Python读入进来,变成字符串,在对字符串进行修改
# 将修改后的字符串写入到一个新的文件中,然后在将原文件删除,把新文件修改为原文件的名字。
with open(file='文件修改实验.txt', encoding='utf-8') as f, open(file='文件修改副本.txt', mode='w', encoding='utf-8') as new_f:
for line in f: # 一行一行读取文件
if '起风了' in line:
line = line.replace('起风了', '打雷了')
# 将内容写入到新文件中
new_f.write(line)
import os
os.remove('文件修改实验.txt') # 删除文件
os.rename('文件修改副本.txt', '文件修改实验.txt') # 重命名文件