python学习9—文件基本操作与高级操作

1. 文件基本操作

  • 打开文件,获得文件句柄:f = open('filename',encoding='utf-8'),open会查询操作系统的编码方式,并按照该编码方式读取文件,若文件使用utf-8编码,则打开需指定编码
  • 通过句柄对文件操作:data = f.read()
  • 关闭文件:f.close()

2. 文件操作模式

  • r,只读模式,不可写,f = open('filename','r',encoding='utf-8')

    • f.readable()判断文件是否可读
    • f.readline()读取文件中的一行,随着光标移动,依次读取各行
f = read('xxx')
f.read() f.readline()  #此处读取时,光标已经到文件最后,则此处读取的值为空
    • f.readlines()读取所有行,并把每一行保存为一个字符串,所有行保存为列表
    • open()包含参数newline,f=open('1.txt','r',newline=''),python会自动将不同平台的换行符号均转换为\n,在windows平台上,换行符为\r\n
  • w,只写模式,不可读,f = open('filename','w',encoding='utf-8'),写入文件的内容必须是字符串
    • 如果文件存在,则清空文件再进行后续操作
    • 如果文件不存在,则会新建一个文件
    • f.write('contents\n'),一行一行的将内容写入文件,从当前光标所在位置写入
    • f.writelines(list),将内容写到一个列表里,在将列表里的各个元素分行写入文件中
    • f.writeable(),判断文件是否可写
  • x,只写模式,若文件不存在则创建该文件,若文件存在则报错
  • a,追加模式,f = open('filename','a',encoding='utf-8')
    • a模式本身就是写模式,只不过是采用追加的方式去写文件
  • r+,读写模式,f = open('filename','r+',encoding='utf-8')
  • w+,x+,a+,写读模式
  • rb,wb,xb,ab,以字节的方式读写,不能指定编码
fr = open('TextFile1.txt','rb')
print(fr.read().decode('gbk')) f = open('test22.py','wb') f.write(bytes('asdfghjkl\n', encoding = 'utf8'))
f.write('中文'.encode('utf8'))

注:从二进制转换为字符串显示为decode(),从字符串变为二进制存储为encode()

自动关闭文件的方式:

with open('file','w') as f:
f.write('asdf') with open('file1','w') as f1, open('file2','w') as f2
f1.write('asdf')
f2.write('ghjkl')

3. 文件操作方法

  1. f.closed,判断文件是否关闭
  2. f.encoding,显示文件打开的编码方式
  3. f.flush(),将内存中文本刷新到文件中,更新文件内容
  4. f.name,文件名
  5. f.tell(),显示当前光标所在位置,按照字节计数
  6. f.seek(0),将光标移动到0位置,按照字节计数
  7. f.read(4),按照字符计数,读取4个字符
  8. f.truncate(10),截取前10个字节,写入原本的文件,覆盖源文件

4. 文件高级操作

  1. f.seek(,0),0表示光标位置采用绝对位置
  2. f.seek(,1),要求文件以b模式打开,采用相对位置,累加
  3. f.seek(,2),采用倒序,以b模式打开,从文件末尾开始移动光标
  4. 循环文件的推荐方式:下面第一种方式读取所有文件内容,然后一行一行的循环;而第二种方式只是一行一行读取文件的内容
for i in f.readlines():
print(i) #推荐
for i in f:
print(i)

5. 读取大文件最后一行

  关键思想:每次增加从文件末尾读取字符串的个数,直到完全读取了最后一行,并用索引[-1]取出读取数据的最后一行。

for i in f:
offs=-10
while True:
f.seek(offs, 2)
data=f.readlines()
if len(data)>1:
print('文件的最后一行是%s' %(data[-1]. decode('utf-8')))
break
offs*=2

python学习9—文件基本操作与高级操作的更多相关文章

  1. Go语言学习教程:xorm表基本操作及高级操作

    在上节内容中,我们介绍了xorm框架表结构的映射规则和表结构的操作.本节课,继续来深入学习表结构基本操作和高级查询的相关功能. 表结构基本操作 对表结构的操作最常见的操作是查询和统计相关的方法,我们首 ...

  2. Python对文件和文件夹的高级操作模块shutil

    shutil模块提供了许多关于文件和文件夹的高级操作. 特别提供了支持文件复制和删除的功能. # 将文件对象fsrc的内容复制到文件类对象fdst.length(可选参数)是缓冲区大小 shutil. ...

  3. Python中对 文件 的各种骚操作

    Python中对 文件 的各种骚操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块. 得到当前工作目录,即当前Python脚本工作的目录路径: os.getc ...

  4. python学习笔记:文件操作和集合(转)

    转自:http://www.nnzhp.cn/article/16/ 这篇博客来说一下python对文件的操作. 对文件的操作分三步: 1.打开文件获取文件的句柄,句柄就理解为这个文件 2.通过文件句 ...

  5. python学习总结---文件操作

    # 文件操作 ### 目录管理(os) - 示例 ```python # 执行系统命令 # 清屏 # os.system('cls') # 调出计算器 # os.system('calc') # 查看 ...

  6. Python学习之==>文件操作

    1.打开文件的模式 r,只读模式(默认)[不可写:文件不存在,会报错] w,只写模式[不可读:不存在则创建:存在则删除内容] a,追加模式[不可读:不存在则创建:存在则追加内容] r+,读写模式[可读 ...

  7. python学习8 文件的操作

    本文拷贝了on testing 的<python之文件操作:文件的读写>,只做学习之用 python的文件读写通过 一.用open函数 二.对文件读写操作 三.读取文件位置定位 1. op ...

  8. python学习day8 文件操作(深度学习)

    文件操作 (day7内容扩展) 1 文件基本操作 obj = open('路径',mode='模式',encoding='编码')obj.write()obj.read()obj.close() 2 ...

  9. python学习(11)文件的读写操作

    1.读文件的7种操作模式 操作模式 具体含义 'r' 读取 (默认) 'w' 写入(会先截断之前的内容) 'x' 写入,如果文件已经存在会产生异常 'a' 追加,将内容写入到已有文件的末尾 'b' 二 ...

随机推荐

  1. NIO浅析(二)

    一:前言 在(一中了解了NIO中的缓冲区和通道),通过本文章你会了解阻塞和非阻塞,选择器,管道 二:完成NIO通信的三要素 * 1.通道(Channel):负责连接* java.nio.channel ...

  2. Linux(四)—— 项目部署与ansible自动化部署

    目录 项目部署与ansible自动化部署 一.项目部署 二.ansible自动化部署(python自动化运维) 1.安装ansible 2.ansible例子 3.ansible自动化部署nginx ...

  3. centos 7 安装mysql5.7

    1.进入到要存放安装包的位置 cd /home/lnmp 2.查看系统中是否已安装 MySQL 服务,以下提供两种方式: rpm -qa | grep mysql yum list installed ...

  4. python之命名元组的好处

    collections.namedtuple() 命名元组的一个主要用途是将你的代码从下标操作中解脱出来举例使用 # 使用 from collections import namedtuple Sub ...

  5. byte为什么要与0xff

    面对带正负号的数,会采用符号扩展,如果原值是正数,则高位补上0:如果原值是负数,高位补1.二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.当前的计算机系统使用的基本上是二 ...

  6. 从一个url地址到最终页面渲染完成,发生了什么?

    从一个url地址到最终页面渲染完成,发生了什么? 1.DNS 解析 : 将域名地址解析为IP地址 浏览器DNS缓存 系统DNS缓存 路由器DNS缓存 网络运营商DNS缓存 递归搜索: www.baid ...

  7. teb教程3

    配置和运行机器人导航 简介:配置teb_local_planner作为navigation中local planner的插件 参考teb安装 由于局部代价地图的大小和分辨率对优化性能影响很大,因为占据 ...

  8. Docker部署web环境之总结篇

    3. 问题总结 问题总结1: 数据库容器时区问题以及环境变量的安全控制 docker-compose.yml文件中的环境变量,可以配置的变量方法有两种: 方法一:docker-compose.yml文 ...

  9. Android项目中实现native调用

    转载自搜狗测试公众号,本人学习使用,侵权删 最近小编在做公司输入法项目中java与native交互部分的测试,先简单学习了java代码调用native代码的实现原理,本次与大家一起分享jni协议,了解 ...

  10. 【转】前后端分离架构:web实现前后端分离,前后端解耦

    一.前言 ”前后端分离“已经成为互联网项目开发的业界标杆,通过Tomcat+Ngnix(也可以中间有个Node.js),有效地进行解耦.并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服务架构 ...