目录

  • 前言
  • 文件的打开模式
  • 文件句柄的方法
  • seek()方法介绍

前言

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

f = open('demo.txt','r',encoding='utf-8')#获得文件句柄,指定编码格式,以可读的形式打开
data = f.read()
print(data)
f.close()#关闭文件

注:open()默认根据系统编码,默认以‘可读’(r)的形式打开文件

文件的打开模式

  • 文件模式

    • r,只读模式(文件必须存在,不然报错)
    • w,只写模式(以这种模式打开,会清空文件的内容,文件不存在,则创建文件)
    • x,只读模式(不存在创建,存在报错)
    • a,追加模式
  • “+”表示同时读写操作
    • r+,读写
    • w+,写读
    • x+,写读
    • a+,写读
  • “b”表示以字节的方式操作(不能指定编码格式)
    • rb
    • wb
    • xb
    • ab

文件句柄的方法

  readable():判断文件是否可读

  writeable():判断文件是否可写

  close():关闭文件句柄

  tell():返回光标位置

  flush():将内容存到硬盘中

  read()

data = f.read()#返回得到文件内容

  readline()

data = f.readline()#返回文件的一行内容

  readlines()

data = f.readlines()#返回一个列表,每个元素为文件的每一行

  write()

f.write('hello')#写入内容

  writelines()

f.writelines(['chen\n','hua\n','li\n'])#写入一列内容

  truncate()

注:文件必须要有写的操作
f.truncate(10)#截取文件前10个字节

  "b"模式下的写操作

f = open('demo.txt','wb')

#必须将将内容转换成二进制的形式存入文件中
f.write(bytes('chen',encoding='utf-8'))
f.write('chen'.encode('utf-8'))

seek()方法介绍

  注:只有read()的光标是以字符为单位,其他seek,tell,truncate都是以字节为单位移动;window下的换行符是(\r\n)

 seek的三种模式(除了默认模式,文件要以‘b’的模式打开) 

  • 0,以文件开头作为起始位置(默认模式)
  • 1,以上一次光标停留的位置作为起始位置
  • 2,以结尾作为起始位置(位置参数要以负数的形式)

  

  使用seek()方法读取日志文件最近一天的内容

2016/2/3     xxx做了什么事
2016/2/4 xxx做了什么事
2016/2/5 xxx做了什么事
2016/2/6 xxx做了什么事
2016/2/7 xxx做了什么事
2016/2/8 xxx做了什么事
2016/2/9 xxx做了什么事
2016/2/10 xxx做了什么事
2016/2/11 xxx做了什么事
2016/2/12 xxx做了什么事
2016/2/13 xxx做了什么事
2016/2/14 xxx做了什么事
2016/2/15 chen做了厉害的事

日志文件

  方案一

f = open('日志文件','rb')
data = f.readlines()
print(data[-1].decode('utf-8'))
f.close()

缺点:readlines()会将文件组成一个大列表,占用大量内存

  方案二

f = open('日志文件','rb')

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

python之路(5)文件操作(open)的更多相关文章

  1. 小白的Python之路 day2 文件操作

    文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 ...

  2. python之路(五)-文件操作

    文件操作无非两个,即:读.写 python 2.x: 文件句柄 = file('文件路径', '模式') python3.x: 文件句柄 = open('文件路径', '模式') 打开文件的模式有: ...

  3. python之路---08 文件操作

    二十六.   文件 f = open(文件路径,mode = '模式',encoding = '编码格式') 1.基础 ① 读写时,主要看光标的位置 ②操作完成要写    f.close( ) f.f ...

  4. python成长之路五-文件操作

    1,文件操作 f = open("D:\种子.txt",encoding="utf-8",mode="r") # 打开一个种子.txt文件, ...

  5. Python学习之路4 - 文件操作&编码转换

    文件操作 文件操作大概分三步: 把文件打开. 操作文件. 把文件关上. 打开文件 打开文件用open()函数,打开成功后返回一个资源,具体语法如下. open(要打开的文件,打开方式,打开文件的格式, ...

  6. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  7. Python基础知识(八)----文件操作

    文件操作 一丶文件操作初识 ###f=open('文件名','模式',编码): #open() # 调用操作系统打开文件 #mode #对文件的操作方式 #encoding # 文件的编码格式 存储编 ...

  8. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  9. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  10. Python 第三天 文件操作(2)

    文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  fi ...

随机推荐

  1. Java学习资源整理(超级全面)

    这里整理一些自己平常搜集的比较好的关于Java的学习资源,主要包括博客站点.书籍.课程等. 了解Java最新资讯 这部分主要是了解与Java相关的动态以及信息,能够拓展我们的视野以及寻找一些好的ide ...

  2. RC4

    RC4(Rivest Cipher 4)是一种流加密算法,密钥长度可变.并且因为加解密时使用的密钥相同,所以也为对称加密.加密过程和解密过程仅明密文的区别. 主要分为初始化 s 盒和伪随机密码生成组成 ...

  3. RPM-GPG-KEY详解

    GPG在Linux上的应用主要是实现官方发布的包的签名机制 GPG分为公钥及私钥 公钥:顾名思意,即可共享的密钥,主要用于验证私钥加密的数据及签名要发送给私钥方的数据 私钥:由本地保留的密钥,用于签名 ...

  4. 如何快速搭建一个基于ServiceStack框架的web服务

    ServiceStack是一个高性能的.NET Web Service 平台,能够简化开发高性能的REST (支持JSON,XML,JSV,HTML,MsgPack,ProtoBuf,CSV等消息格式 ...

  5. 特殊需求:EF 6.x如何比较TimeSpan格式的字符串?EF Core实现方式是否和EF 6.x等同?

    前言 我们知道C#中的TimeSpan对应SQL Server数据库中的Time类型,但是如果因为特殊需求数据库存储的不是Time类型,而是作为字符串,那么我们如何在查询数据时对数据库所存储的字符串类 ...

  6. soamanager发布的Webservice服务,调用时出现http500报错

    最近再给薪酬那边发布ws服务时出现了报错,调用方反馈了errorCode:BEA-380002.在使用XMLspy工具去调用这个WSDL时候,则反馈http500的错误消息.如下图: 遇到这种问题我通 ...

  7. Spring Boot 集成Swagger

    Spring Boot 集成Swagger - 小单的博客专栏 - CSDN博客https://blog.csdn.net/catoop/article/details/50668896 Spring ...

  8. linux基本命令2

    目录: 目录: /bin:可执行文件 /sbin:系统文件 /dev:设备文件 命令: mkdir test cd test touch 11.txt vi 11.txt cat 11.txt cp ...

  9. synchronized和lock有什么区别?

    一.原始构成 synchronized是关键字属于JVM层面,monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖monitor对象只有在同步代码块和同 ...

  10. Power BI For Competition

    It's traditional report design, I'm insufficient for designing that if had a designer to help me wil ...