找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1279|回复: 0

[讨论] win10环境下python打开文件写入中文的bug,求指导

1

主题

1

帖子

1

积分

贫民

积分
1
hajion 发表于 2021-11-19 21:38:05 | 显示全部楼层 |阅读模式
操作系统: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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表