|
操作系统:win10专业版
python环境:anaconda python3.8
现有代码如下:
str1 = "数据科学与大数据技术"
with open('j:\\b.txt', mode='r+', encoding='utf-8') as f:
print(f.closed)
print(f.tell())
size = f.write(str1)
# print(f.tell())
print(f.readlines())
print(f.closed)
在j盘根目录下首先新建一个b.txt文件,通过记事本下方的状态栏显示为utf-8编码,接下来在b.txt文件里输入两行数据:
123456789
python编程论坛
按照刚才的代码在pycharm下运行没有出错,但是pycharm显示出来的结果是:
False
0
['123456789\n', 'python编程论坛']
True
这时如果打开b.txt文件查看内容变成:
123456789
python编程论坛数据科学与大数据技术
如果再次运行上述程序,则pycharm显示出来的结果是:
False
0
['123456789\n', 'python编程论坛数据科学与大数据技术']
True
这时如果再次打开b.txt文件查看内容变成:
123456789
python编程论坛数据科学与大数据技术数据科学与大数据技术
问题1:
按照python中open的解释,'r+'模式下执行write应该会清除原本内容,写入‘数据科学与大数据技术’,为什么实际打开变成了附加模式?
问题2:
此时如果我把注释掉的那行取消注释,pycharm执行此时会出错:
False
0
30
Traceback (most recent call last):
File "J:/PycharmProjects/pythonProject/test.py", line 7, in <module>
print(f.readlines())
File "D:\anaconda3\lib\codecs.py", line 322, in decode
(result, c**umed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x95 in position 0: invalid start byte
|
|