读写文件

文件处理步骤:打开文件——处理数据——关闭文件

File=open('文件名称','读取方法')#打开文件
t=File.readline()#读取文件
File.close()#关闭文件

读写文件基本操作

open()#打开文件
read(size)#读取文件长度为size的字符串,如果为给定或者为负则读取全部内容
readline()#读取一行内容,返回字符串,文件读写位置下降一行
readlines()#读取所有行并返回列表
write(s)#将字符串s内容写入文件
writelines(s)#向文件写入一个元素为字符串的列表,如果需要换行则要自己写入每行的换行符
seek(off,whence=0)#设置文件当前读写位置,off表示偏移量,whence代表位置,0从头,1当前,2末尾
tell()#返回文件读写位置
close()#关闭文件

文件指针的相关知识

以w打开文件:只写

import osdef main():file=open('test.txt','w',encoding='utf-8')print(file.tell())file.write('Hello World')print(file.tell())file.write('twice')print(file.tell())file.close()if __name__ == '__main__':main()

运行结果:

这代表写入不会自动换行,需要手动写入

实现换行:

import osdef main():file=open('test.txt','w',encoding='utf-8')print(file.tell())file.write('Hello\n')print(file.tell())file.write('World')print(file.tell())file.close()if __name__ == '__main__':main()

从上述结果中我们可以得知,以w打开文件,若文件已存在那么是会覆盖掉之前的文件的,所以要对已有的文件进行修改是不能通过w来实现的

接下来是修改读写位置:

import osdef main():file=open('test.txt','w',encoding='utf-8')print(file.tell())file.write('Hello\n')print(file.tell())file.write('World')print(file.tell())file.seek(0,0)#从头开始读写文件file.write('test1')file.seek(0,2)#从末尾开始读写文件file.write('test2')file.close()if __name__ == '__main__':main()

可以得知从头开始写文件是会覆盖掉原本头部已经有的内容,末尾是直接增加的

那么如果我想在头部位置增加一行,或者增加修改某一行呢?这个无法通过seek实现,因为你不知道第几行相对于头部或者是尾部的偏移量。一般通过读取全部内容成列表,修改相应内容后在将其写入文件。由于我们需要读取文件,而w的权限不够,w+虽然只比w多了一个写权限,但也会覆盖原有文件,所以采用r+,能读写,不会覆盖原文件。

import osdef main():file=open('test.txt','r+',encoding='utf-8')print(file.tell())lin=file.readlines()lin[1]='101112\n'file.seek(0,0)file.truncate()#清空文件file.writelines(lin)file.close()if __name__ == '__main__':main()

该开始文件内有三行数据

运行程序后文件更改为

注意两点,w打开文件后文件读写位置处于开头位置,偏移量为0。清空文件truncate方法是从当前读写位置到末尾清空,所以要想清空文件需要将读写位置设置到开头。

最后一个问题,读写位置是否是读写操作共有的还是每个操作各一份?

开始时文件内容为一行数据:123456789

import osdef main():file=open('test.txt','r+',encoding='utf-8')print(file.tell())re=file.read(1)#读取4个字节print('读取数据:'+re)print(file.tell())file.write('000')print(file.tell())file.close()if __name__ == '__main__':main()

这个产生的效果很有趣,运行结果:

这个代表读取文件时将文件指针向后移了,但是写的时候会直接将文件指针移到末尾。

再次调用读操作

    print('再次读取数据:'+file.read(8))

这个没有读到任何东西,代表读也是从末尾开始读的。综上读写操作公用一个文件指针。但又有一个新的问题,读写操作对文件指针的影响不是单纯的后移几个字节,需要知道他们之间的相互影响。

import osdef main():file=open('test.txt','r+',encoding='utf-8')file.write('9')print(file.tell())re=file.read(1)#读取4个字节print('读取数据:'+re)print(file.tell())file.seek(2,0)file.write('000')print(file.tell())print('再次读取数据:'+file.read(8))file.close()if __name__ == '__main__':main()

运行结果为:

总结

结合这个结果和之前的结果可得规律:

1.开始时文件指针和读写方式的关系

​ w系列由于都会创建/覆盖之前的文件,所以文件指针都会位于开头

​ r系列文件指针开始时在开头

​ a系列文件指针开始时在末尾

2.读写操作对文件指针的影响

​ 刚开始时无论是读操作还是写操作都会从对应打开方式处开始读写。但是如果进行过读操作后再进行写操作写 操作会将文件指针修改文件末尾后再写入数据

python读写文件——文件指针操作相关推荐

  1. python处理excel教程实例-python 读写excel文件操作示例【附源码下载】

    本文实例讲述了python 读写excel文件操作.分享给大家供大家参考,具体如下: 对excel文件的操作,python有第三方的工具包支持,xlutils,在这个工具包中包含了xlrd,xlwt等 ...

  2. python读csv最快方法_使用Python读写csv文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  3. python更新excel内容_[原创]使用 Python 读写 Excel 文件(一)更新

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

  4. python暴力破解excel_使用 Python 读写 Excel 文件(一)

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

  5. python读写csv文件方法总结_使用python读写CSV文件的三种方法

    Python读写csv文件 觉得有用的话,欢迎一起讨论相互学习~Follow Me 前言 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是 ...

  6. python 读写数据文件的6种常用方式

    本文主要介绍python读写数据文件的6种常用方式. 1. python内置方法 with open(r'test.xlsx') as f:a = f.read() 一般,在应用上述上下文管理器后,可 ...

  7. python: 读写excel文件

    文章目录 python 读写 excel 文件 Excel 文件简略描述 xlwt xlrd xlutils 读写 xlrd 读取 xlwt 写 xlutils 任务练习 python 读写 exce ...

  8. python读写压缩文件使用gzip和bz2

    python读写压缩文件使用gzip和bz2 #读取压缩文件 # gzip compression import gzip with gzip.open('somefile.gz', 'rt') as ...

  9. python读取csv文件的方法-python读写csv文件的方法

    1.爬取豆瓣top250书籍 import requests import json import csv from bs4 import BeautifulSoup books = [] def b ...

  10. csv 字符串_爬虫|python读写csv文件的方法完成生涯规划表

    前面用PrettyTable制作了生涯规划表,今天突然想到其实可以用Python读写Excel文件,还可以制作Excel表格,相对而言,感觉csv的读写更简单,所以决定用csv改写生涯规划案例,以后教 ...

最新文章

  1. CSS position(定位)属性
  2. flutter从0到1构建大前端应用 pdf_推荐前端热门GitHub代码库「值得收藏」
  3. 【Elasticsearch】es IK分词器的安装
  4. 文件操作(文件指针+顺序/随机读写)
  5. 猜数字的算法的一个简单实现
  6. 小凡Dynamips 虚拟pc的使用
  7. java taglib开发_Java WEB开发实战 之 第六部分:Taglib基本知识和基本开发【私塾在线原创】...
  8. VB 串口编程 开发心得
  9. JS加入收藏夹操作代码
  10. 做数据迁移差点累死的程序员有话要说----数据迁移经验分享
  11. java 请求https post 接口 绕过证书验证
  12. 真实世界里的钢铁侠-特斯拉汽车创始人埃隆·马斯克(Elon Musk)
  13. Android中的UI组件
  14. 抖音很火的召唤神龙的小游戏完整代码-召唤神龙
  15. C#winform图片、图标操作
  16. 局域网传输文件_【电脑篇】巧借局域网,告别第三方工具便捷实现电脑间的文件传输...
  17. ALEVEL经济学:通货膨胀的原因是什么?
  18. 飞行对小鸟来说压力很大吗?
  19. 软件工程-网上商城分析设计(小组项目)
  20. 关于ant-design-vue的table内嵌输入框性能问题

热门文章

  1. HG30A-3多用表校验仪
  2. JavaScript基础复习下(51st)
  3. 编程入门——计算机硬件介绍
  4. 隐藏在浏览器背后的“黑手”
  5. 两阶段最小二乘法TSLS案例分析
  6. Win10此设备不支持接收 Miracast 无法投影的解决方法
  7. SQL SERVER代理的权限设置
  8. 基于STM32(F103ZE)的LD3320语音控制系统
  9. 苹果CMS插件安装使用下载苹果CMS插件集合
  10. C语言阿拉伯数字转大写汉字,将阿拉伯数字转大写汉字程序的类