|
|

楼主 |
发表于 2019-5-22 14:00:45
|
显示全部楼层
这样改了之后,代码可以正常运行了,也是预期的输出结果
不过还是想继续追问一下:
1. 原来描述的问题,原因和症结究竟出在什么地方?是代码里潜藏了什么问题?(不用所提供的代码,在单独打开的shell中以默认方式open这个文档,从头到尾是可以正常readline()读取到末尾的;另外,原来代码中以默认方式open后readline()读取至倒数第二行也都还是正常的)还是我这个record.txt的文档潜藏了什么问题?还是其他什么地方存在问题?
2. open里的encoding和errors这两个参数上网搜了一下:
2.1 encoding说是跟编码相关的,一般都说的是utf-8、gbk之类的,这里的gb2312指的是什么内容呢?这么修改具体是针对代码或者文档中的什么问题来修改的呢?
2.2 errors说是取ignore的时候,编码出现问题,程序会忽略而过,继续执行下面的程序:
2.2.1 这里针对的是我在原贴中说的readline()之后文件指针多进一位的问题进行忽略吗?
2.2.2 如果是针对这个多进一位的问题进行忽略后,取了ignore的值python为何能够自动跳到这一行的开头进行读取而不是后移一位进行读取呢?(自己试验了一下,将打开文件的语句改为f = open('record.txt', errors="ignore"),也是可以正常运行并输出预期结果的,因此感觉上errors="ignore"应该就是针对这个问题的,另外两个参数'r'和encoding应该可以不用添加)python在这其中的判断处理原则是什么呢?
2.2.3 更进一步,一般在什么原则下打开文件时建议errors取ignore呢?取ignore时会带来其他什么样的问题、产生什么样的影响呢?
现在代码修改后问题解决了,只是仍苦恼于其中的原因症结,疑问颇多,望高手的进一步答疑解惑 |
|