资讯专栏INFORMATION COLUMN

Python之文件读写补充——R+模式下修改中文内容

sunsmell / 2844人阅读

摘要:存储元是存储器中最小存储单元,它的作用是用来存放一位二进制代码或。所以在文件写入后这种和的组合就固定下来,如果这种组合是用编码写入的,那么当你写入一段汉字后,这种组合就表现为每个存储元代表一个汉字。

很高兴在我写的文章下看到有人回复,然后我在测试回复中的代码时居然发现个有趣的现象,并且得出下面的结论,请大家讨论

先说结论

r+模式(读写)下,如果文件内容已经存在了中文,当你试图插入新内容时,必须使新内容的总体字节数是当前编码下单个汉字占位字节的整数倍。否则读取时会报错。
补充:如果你把指针调到末尾则没这个问题,也就是说可以在后面写,但是在前面插入内容的话就会有上面的问题。

底层原理说明:

为了搞清楚最底层的工作原理,我专门看了几篇相关文章,得出如下结论,我觉得可以了,不用再深究了,再往深了说就有点儿舍本逐末了。
首先,计算机存储的都是二进制数字,也就是说是每8位一组的0和1的各种组合,当写入磁盘后,在物理层面这种0和1的组合就固定下来,再往底层说就是磁盘表面会出现凹凸不平的代表0和1的存储元。(存储元是存储器中最小存储单元,它的作用是用来存放一位二进制代码0或1。)
所以在文件写入后这种0和1的组合就固定下来,如果这种组合是用UTF-8编码写入的,那么当你写入一段汉字后,这种组合就表现为每24个存储元代表一个汉字。
此时如果你想修改这段汉字的任何一个字,你必须修改相应的24个存储元,如果你只修改8个存储元(一个字节)或者16个存储元(两个字节),那么剩下的存储元无法被当前编码识别,也许碰巧会有某种编码能够识别这剩下的16个或者8个存储元代表的组合,但这已经没有意义。我还不知道有什么办法能让计算机在指定位置使用一种编码,然后在另一个位置使用另外一种编码。也许有……暂时还没学到

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42574.html

相关文章

  • Python3网络爬虫实战---31、数据存储:文件存储

    摘要:如果该文件已存在,文件指针将会放在文件的结尾。运行结果以上是读取文件的方法。为了输出中文,我们还需要指定一个参数为,另外规定文件输出的编码。 上一篇文章:Python3网络爬虫实战---30、解析库的使用:PyQuery下一篇文章:Python3网络爬虫实战---32、数据存储:关系型数据库存储:MySQL 我们用解析器解析出数据之后,接下来的一步就是对数据进行存储了,保存的形式可以...

    dreamans 评论0 收藏0
  • Python全栈路系列文件操作

    摘要:可以对文件进行查看创建等功能,可以对文件内容进行添加修改删除,且所使用到的函数在为,在同时支持和,但是在系列移除了函数。在及以后,又支持同时对多个文件的上下文进行管理,即原文链接 Python可以对文件进行查看、创建等功能,可以对文件内容进行添加、修改、删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除...

    Drummor 评论0 收藏0
  • python 实现中文分词统计

    摘要:利用我们集成的目前世界上规模最大的人工分词和词性标注中文语料库约含万字训练而成,模型标注能力强大。据说是最好的中文分词组件,支持等多种语言。 总是看到别人用Python搞各种统计,前端菜鸟的我也来尝试了一把。有各种语义分析库在,一切好像并不是很复杂。不过Python刚开始看,估计代码有点丑。 一、两种中文分词开发包 thulac (http://thulac.thunlp.org/)...

    Honwhy 评论0 收藏0
  • Python 3 学习笔记——键盘输入和读写文件

    摘要:键盘输入提供了内置函数从标准输入读入一行文本,默认的标准输入是键盘。可以接收一个表达式作为输入,并将运算结果返回。将返回该文件中包含的所有行。将写入到文件中然后返回写入的字符数。当处理一个文件对象时使用关键字是非常好的方式。 1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。input 可以接收一个 Python 表达式作为输入,...

    xavier 评论0 收藏0
  • Python基础(六)文件

    摘要:它则是以行为单位返回字符串,也就是每次读一行,依次循环,如果不限定,直到最后一个返回的是空字符串,意味着到文件末尾了。 读文件 在某个文件夹下面建立了一个文件,名曰:130.txt,并且在里面输入了如下内容: learn python http://qiwsir.github.io qiwsir@gmail.com f = open(123.txt) #打开已经存在的文件,此文件在当前...

    wuyangnju 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<