记得刚开始学习python文件操作写文件的时候有个问题,很奇怪。最后知道了就是字节数的原因。

我们先来看个例子。

新建个文件存为utf-8命名为0117utf-8.txt记得去掉BOM头。

我们用r+模式尝试去修改

>>> fp=open("d:\\pydelete\\0117utf-8.txt","r+")

>>> fp.write("aa")

2

>>> fp.close()

>>>

结果如下

乱码一大坨。

这里就涉及了字节数了。

因为utf-8存中文是用3个字节存一个,存英文是用1个字节存一个英文字符。

如果写入“aaa”就可以了。

所以切入正题,看看字节数和字符个数。

1.fp.read(arg),fp.write()后返回的数字是字符个数。

我们用刚才写过的文件读一下看看。

>>> fp=open("d:\\pydelete\\0117utf-8.txt","r+",encoding="utf-8")

>>> fp.read(1)

'a'

>>> fp.read(1)

'a'

>>> fp.read(1)

'a'

>>> fp.read(1) #可以看到这里的数字应该是字符个数,意思一个字符。

'国'

>>> fp.read(1)

'话'

>>> fp.read(1)

''

>>>

我们再来写入一些内容。

>>> fp.seek(0.0) #将游标切回行首

0.0

>>> fp.write("新写入2x")

5 #可以看到这里也是字符个数。表示写入5个字符。

>>>fp.flush()

我们算一个结果之前文件内容是“aaa国话”我们写入“新写入2x” 之前的文件字节数是9,现在写入11 r+模式会从头开始覆盖所以现在文件内容为“新写入2x”

如果写入的字节数小于之前的有可能出现乱码(如果原文件有中文存在)

2.fp.tell(),fp.seek(0,0) 是字节数

我们加游标切回行首,再来读下。

>>> fp.seek(0,0)

0

>>> fp.read(1)

'新'

>>> fp.tell()

3 #可以看出tell是返回的字节数,也就是游标现在应该在新字后边。

>>>

由此我们试着改变游标位置。

>>> fp.seek(0,0)

0

>>> fp.seek(6,0) #seek的第一个参数也是字节数,那现在游标在哪我如果读一个字符应该是什么? 游标应该在写字后如果读一个字符应该是“入”

6

----------

>>> fp.read(1)

'入'

3.fp.truncate(size)

把文件裁成规定的大小,默认是裁到当前文件操作标记的位置。如果size 比文件的大小还要,依据系统的不同可能是不改变文件,

也能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。参数也是字节数。

我们来尝试一下

>>> fp.seek(0,0)

0

>>> fp.truncate(6)

6

>>>

此时文件内容应该只剩下“新写”2字。

知道这些我们在写文件的时候,就能很清楚效果了。

关于字节数可以参考:

python获取文件字节数_python关于文件操作中的字符个数和字节数相关推荐

  1. python获取当前路径导包_python 通过文件夹导入包的操作

    通过文件夹导入包要求每个目录下都有一个__init__.py文件,此文件可空白.也可不空.a@ubuntu:~/Desktop$ tree myp myp ├── a │ ├── b.py │ └── ...

  2. python获取接口返回值_Python+request 登录接口reponse的返回值token跨py文件的传递《二》...

    主要使用场景: 一般我们在进行接口测试时,依赖登录接口后reponse中的某些返回值,因此需要将login接口单独写一个py文件,另外的py文件均可调用login的reponse返回值使用.共用登录接 ...

  3. python读文件完整代码_Python读写文件的代码示例

    本篇文章给大家带来的内容是关于Python读写文件的代码示例,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助 一.读取文件 读取文件步骤: 1.找到文件 2.打开文件 3.读取文件内容 ...

  4. python数学公式pdf文件的转换_python转换文件 多种文件转换为pdf

    1.office文件 这里用的是win32com, 需要注意已经安装的python版本是32位还是64位. 安装后导入 from win32com.client import Dispatch, co ...

  5. python的文件读取方式_python中文件读取方式

    指\u201CPython编程:从入口到实践\u201D和\u201CPython编程快速启动\u201D1.文件路径获取文件路径包括绝对路径和相对路径.绝对路径是指\u201CE: \\ \\\u2 ...

  6. 用python写一个文件管理程序下载_Python管理文件神器 os.walk

    原标题:Python管理文件神器 os.walk 来自:CSDN,作者:诡途 [导语]:有没有想过用python写一个文件管理程序?听起来似乎没思路?其实是可以的,因为Python已经为你准备好了神器 ...

  7. python中对文件的操作_Python对文件操作知识

    这篇文章主要介绍了Python对文件操作知识汇总的相关资料,非常具有参考借鉴价值,需要的朋友可以参考下 打开文件 操作文件 1打开文件时,需要指定文件路径和打开方式 打开方式: r:只读 w:只写 a ...

  8. python程序怎样在手机上_python手机文件怎么上传至电脑?

    本文讲解python的一个内置文件传输下载器,可以用来在局域网内进行文件传输,当然可能有人会问,我用微信QQ也能传,为什么还要用python来传输下载?在此,其实我个人感觉的是,这种操作更简单,省了时 ...

  9. python如何读取文件指定行_Python读取文件、大文件和指定行内容的几种方法

    在使用python处理文本的时候,经常会需要读取文件的内容.如果文件比较小,那么直接使用open文件对象打开文件,再通过read()方法最为方便,这种方法就是把文件内容读出来后放到内存变量. read ...

最新文章

  1. Lync 小技巧-49-Lync 自动备份-批量管理-用户(免费视频)
  2. zstack快速安装文档
  3. 长时间整理的xhtml网页设计规范
  4. 部分视图传viewbag_无法在ASP.NET MVC3的部分视图中访问ViewBag
  5. shell中的变量与eval(转)
  6. 记录C++ Builder 6.0开发过程中的一个linker error
  7. 给新手开店选品的建议
  8. Oracle Web链接客户端
  9. CAP 原理这样理解最简单
  10. alternate rows shading using conditional formatting
  11. 小程序_协作开发(版本控制)
  12. 后端如何收取多个文件_一次上传多个文件机制的两种解决方案
  13. adb ps shell 查看进程_adb shell查看进程方法
  14. 动手学深度学习之锚框
  15. 【大数据开发】ClickHouse——ClickHouse函数(全)
  16. Java Learning 000 搭建开发环境
  17. 自动插入匹配与标题相关的百度图片或者搜狗图片软件-批量插入txt文档-Chatgpt批量写文章配图神器
  18. 华为,做千行百业与数字化间的破壁人
  19. RISC-V 嵌入式 Rust 快速入门,基于 Renode 模拟器和 HiFive1 开发板
  20. 什么是人工智能模型的涌现特性?

热门文章

  1. LTV(CLV)模型的实战案例
  2. 15 款Python编辑器的优缺点,别再问我“选什么编辑器”啦!
  3. 27 行代码开发一个最简单的 SAP ALV 报表
  4. 如何在 Github 工作流文件里引用自定义实现的 action
  5. SAP S/4HANA Customer Management(CRM)模块的扩展性设计
  6. 如何获得tomcat管理员账号
  7. SAP ABAP SM50事务码和Hybris Commerce的线程管理器
  8. why our extension project didn't load S3 view and controller
  9. Angular:Use function as controller
  10. ActionTileViewController.js