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+模式无法读到文件内容