1. a+模式无法读到文件内容
虽然官方文档解释“a+”模式可以对文件进行读写,但由于“a”是追加模式,所以打开文件后,指针指向的是文件尾部,读取内容自然为空。
1.1 首先,新建文件abc.txt,并且输入内容“hhhh”,如下图。
1.2 然后,编写python代码如下。
'''
1. 使用a+模式打开文件
2. 通过文件的tell()方法显示指针位置
3. 读取文件内容并显示
4. 向文件写入“xxxx”
'''
with open('abc.txt', 'a+') as file_obj:
print('指针位置', file_obj.tell())
print('文件内容', file_obj.read())
file_obj.write('xxxx')
1.3 运行结果及文件内容如下。
1.4 通过以上步骤可知,指针位置处于文件尾部,无法读到内容,但是内容“xxxx”正常追加至文件尾部。
解决方案:在加载文件后,通过seek()方法将指针位置设为文件起始位置,即可读到文件内容,代码和结果如下。
'''
1. 使用a+模式打开文件
2. 将指针位置设为文件起始位置
3. 通过文件的tell()方法显示指针位置
4. 读取文件内容并显示
5. 向文件写入“xxxx”
'''
with open('abc.txt', 'a+') as file_obj:
file_obj.seek(0)
print('指针位置', file_obj.tell())
print('文件内容', file_obj.read())
file_obj.write('xxxx')
2. w+模式无法读到文件内容
虽然官方文档解释“w+”模式可以对文件进行读写,但会将原始文件内容删除,从头向文件写入内容。
1.1 首先,重置上述代码和文件内容,仅仅将“a+”模式更改为“w+”模式,如下图。
'''
1. 使用w+模式打开文件
2. 通过文件的tell()方法显示指针位置
3. 读取文件内容并显示
4. 向文件写入“xxxx”
'''
with open('abc.txt', 'w+') as file_obj:
print('指针位置', file_obj.tell())
print('文件内容', file_obj.read())
file_obj.write('xxxx')
1.2 运行结果及文件内容如下。
1.3 通过以上步骤可知,指针位置处于文件起始位置,无法读到内容,并且最终文件内容为“xxxx”,说明以“w+”模式打开文件后,文件内容即被清空。
解决方案:虽然使用“w+”可读可写,但无法读到内容。
更多推荐
python以a+和w+模式无法读到文件内容
发布评论