操作模式
1. 文本模式
r => rt
w => wt
a => at
'''
注意事项:
1. 文件中的内容全部都是以字符串为单位
2. 写入的内容只能是字符串
3. 必须指定encoding参数
'''
2. 二进制模式
# 这里的b就不能省略了, b代表是二进制模式,执行所有的数据类型
rb
wb
ab
'''
注意事项:
1. 文件中的内容都以字节(bytes)为单位
2. 写入的内容必须是二进制
3. 一定不能指定encoding参数
'''
做一个简易版本的拷贝功能
# 1. 输入被拷贝文件的路径
# 2. 输入将要放入文件的路径
# 3. 通过代码操作文件实现 读被拷贝的文件,写入到指定的文件路径下
# 1. 输入被拷贝文件的路径
wait_path = input('wait path:').strip()
new_path = input('new path:').strip()
with open(r'%s' % wait_path, 'rb') as f, open(r'%s' % new_path, 'wb') as f1:
for line in f:
f1.write(line)
二进制的读写模式
# with open('a.txt', 'rb') as f:
# print(f.read(6).decode('utf8'))
with open('a.txt', 'r',encoding='utf8') as f:
print(f.read(5))
'''
1. 一个英文一个字节
2. 一个中文字符三个字节
3. f.read(n)
在t模式下,n代表的是字符的个事
在b模式下,n代表的是字节个数
'''
文件中控制光标的移动
with open('a.txt', 'rb') as f:
print(f.read(3))
# print(f.tell()) # 查询光标移动的位置
f.seek(-3, 2)
print(f.read().decode('utf8'))
'''
f.seek()
offset
偏移的位置量
whence
模式控制
0:默认的模式,该模式代表指针移动的字节数是以文件开头为参照的
1:以当前所在的位置为参照的
2:以文件末尾的位置为参照的
强调:其中0模式可以在t或者b模式使用,而1跟2模式只能在b模式下用
'''
修改文件内容
# 1. 读取文件内容
with open('a.txt', 'r', encoding='utf8') as f:
data = f.read()
print(data)
# 2. 把新数据写入文件
with open('a.txt', 'w', encoding='utf8') as f:
# f.seek(3, 0)
# f.write('<妇女主任>')
new_data = data.replace('山东', '妇女主任')
f.write(new_data)