博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中的文件操作——09
阅读量:5824 次
发布时间:2019-06-18

本文共 1766 字,大约阅读时间需要 5 分钟。

open方法打开文件,r,只可读模式,不能写,文件的内容只能是字符串

f = open('xxx','r','encoding='utf-8')
data = f.read()#以字符串形式读取整个文件data1 = f.readlines()#列表的形式,每行为一个元素f.close()
print(f1.readable()) #判断是否可读,返回bool值

w,只写模式,不能读

f = open('xxx','w',encoding='utf-8')#如果存在xxx文件则覆盖,如果不存在xxx文件则新建f.write('dsadasd')f.write('dsdsadaw1')#当多行write写入时需要自己加上\n换行,否则不会换行f.writelines(['dsadad3\n','dsaasda\n','dasda\n'])#写入一个列表行f.close()

 

a,追加模式,只追加内容,在文件的最后开始写

f = open('xxx','a',encoding='utf-8')f.write('winsdom')f.close()#追加模式   写在原文件的最后

 

b,对于非文本文件,我们只能使用b模式,‘b’表示以字节的方式操作(所有的文件也都是以字节飞形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jpg格式、视频文件的avi格式)

rb

wb

ab

补充:以b的方式打开文件时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

 

‘+’ 表示可以同时读写某个文件

‘r+’  读写(可读,可写)

‘w+’  写读(可读,可写)

‘a+’  写读(可读,可写)

 

‘x’  只写模式(不可读,不存在创建,存在则报错)

‘x+’  写读(可读,可写)

‘xb’

 

操作文件的方法

f.read()         #读取所有内容,光标移动到文件末尾f.readline()    #读取一行内容,光标移动到第二行首部f.readlines()    #以列表的形式读取全部内容(读取每一行,存放于列表中)f.write('11111\n22222\n')    #针对文本模式的写,需要自己写换行符f.write('1111\n2222\n'.encode('utf-8'))    #针对b模式的写,需要自己写换行符f.writelines(['333\n','444\n'])    #文件模式的多行写入f.writelines('333\n',encoding='utf-8'),'444\n'.encode('utf-8')])    #b模式f.readable()#判断文件是否可读f.writable()#判断文件是否可写f.closed#判断文件是否关闭f.encoding#如果文件打开模式为b,则没有该属性f.flush#立刻将文件内容从内存刷到硬盘f.name

 

文件中的光标移动

read(3)

1、文件打开方式为文本模式时,代表读取3个字符

2、文件打开方式为b模式时,代表读取3个字节

 

seek,tell,truncate

1、seek有三种移动方式0,1,2,其中1和2必须在b模式下进行,但无论哪种模式,都是以bytes为单位移动的

2、truncate是截断文件,所以文件的打开方式必须是可写,但是不能用w或w+的方式打开,因为那样相当于直接清空文件了,所以truncate要在r+或者a或者a+的模式下测试效果

seek实现

f = open('fly away1','rb')   #使用seek(0,2)倒着读文件最后一行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 *= 2f.close()

 

转载于:https://www.cnblogs.com/winsdom/p/9112283.html

你可能感兴趣的文章
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
HTML5新手入门指南
查看>>
opennebula 开发记录
查看>>
ubuntu 修改hostname
查看>>
sql 内联,左联,右联,全联
查看>>
C++关于字符串的处理
查看>>
6、Web Service-拦截器
查看>>
Flask 源码流程,上下文管理
查看>>
stream classdesc serialVersionUID = -7218828885279815404, local class serialVersionUID = 1.
查看>>
ZAB与Paxos算法的联系与区别
查看>>
java 读取本地的json文件
查看>>
Breaking parallel loops in .NET C# using the Stop method z
查看>>
Android Content Provider Guides
查看>>
修改故障转移群集心跳时间
查看>>
[轉]redis;mongodb;memcache三者的性能比較
查看>>
微软职位内部推荐-Sr DEV
查看>>