对文件操作的基本步骤

f=open('a.txt','r',encoding='utf-8')
data=f.read()
print(data)
f.close()

文件的打开和关闭使用open()、close()函数,文件刚打开时光标在最前面

open()函数的第一个参数为要打开的文件名,默认路径为这个脚本所在路径;第二个参数为打开模式,第三个参数为编码格式

文件的打开模式如下,省略的话默认为只读r,文件必须存在否则会报错;使用只写w模式打开,如果文件存在则先将原文件内容清空再写,不存在则创建一个空文件再写;使用读写模式a打开如果文件存在则在原文件内容上追加写,不存在的话先创建

f.readable()  判断文件是否可读,返回True或False

f.readline()  每次读取一行,当读取到文件末尾时再执行readline读取内容为空

f.readlines()  将文件所有内容读出放到一个列表,每行内容为一个元素,例如['hello\n', 'hi\n', 'nice\n']

如果在文件打开时,指定newline=‘’,则换行的结果显示为/r/n(windows平台的换行符为/r/n,unix和linux平台的换行符为/n)

f1=open('b.txt','r',encoding='utf-8')
f2=open('b.txt','r',encoding='utf-8',newline='')
print(f1.readlines())
print(f2.readlines())
f1.close()
f2.close()
执行结果为
['123\n', 'abc']
['123\r\n', 'abc']

f.writable()  判断文件是否可写,返回True或False

f.closed  判断文件是否关闭,返回True或False

f.write()  将内容写入文件

f.writelines()  将列表内容写入文件,f.writelines(['hello\n', 'hi\n', 'nice\n'])

f.encoding 文件打开时候的编码

f.flush()  将内容中的内容刷到硬盘

直接使用open函数打开文件时,还需要手动关闭close文件,否则文件会一直占据内存。使用with open() as f打开文件则无需手动关闭,使用例子如下。

def file_operation():
with open('a.txt','a+',encoding='utf-8') as f:
  f.write('hello')
print(f.read())

文件默认是以t即文本模式进行处理,

b为二进制模式,可以处理除了文本之外的图片、音频、视频等格式的文件,还可以跨平台处理

f=open('test11.py','rb')------以b的方式打开文件时不能指定编码

data=f.read()

print(data.decode('utf-8'))------读取之后以utf-8格式对二进制进行解码

f=open('test22.py','wb')

f.write(bytes('1111\n',encoding='utf-8'))--------bytes函数将指定内容以uft-8格式编码为二进制

f.write('22222\n'.encode('utf-8'))----------encode直接将指定内容以uft-8格式编码为二进制

文件内光标的移动

除去read( )是以字符进行读取的,其他光标的移动都是以字节为单位进行的,如seek、tell、truncate

read(3)表示读取3个字符

seek(3)表示光标向后移动3个字节,默认是从光标在文件最前面开始,也即seek(3,0)

光标的相对移动需要在打开时指定b模式,seek的第二个参数表示移动方式,0为默认方式,即从文件最开头移动,1是相对上一次移动,2是从文件末尾移动

seek(3,1) 表示从光标上一次所在的位置向后移动3个字节

seek(-3,2)表示从文件末尾开始向前移动

truncate(3)表示截取文件前3个字节,必须以可写的方式打开,w和w+除外

tell( )表示显示当前光标所在的字节

最新文章

  1. ACM :漫漫上学路 -DP -水题
  2. 从零开始学Python第一周:Python基础(上)
  3. wpf直接绑定xml生成应用程序
  4. hadoop 2.6伪分布安装
  5. Javascript 与正则表达式
  6. 玩转Java对象和XML相互转换
  7. 0506 Scrum 项目1.0
  8. 保留json字符串中文的函数,代替json_encode
  9. 在word里插入图片,并设置图片的格式
  10. 学习总结——DOM
  11. 匈牙利算法 cojs.tk 搭配飞行员
  12. 5.建造者模式(Builder Pattern)
  13. Unity3D 5.1烘培 操作
  14. Oracle数据库数据同步方案
  15. python中变量
  16. IE中Ajax数据缓存的问题
  17. asp.net web api long running task
  18. MD5算法的使用
  19. poj 1159 Palindrome(区间dp)
  20. Apache Mina(二)

热门文章

  1. POJ-2018 Best Cow Fences(二分加DP)
  2. 基于元胞自动机NaSch模型的多车道手动-自动混合驾驶仿真模型的Matlab实现
  3. bisecting k-means
  4. PHP漏洞
  5. kubernetes实战(十五):k8s使用helm持久化部署jenkins集成openLDAP登录
  6. (四)Web应用开发---系统架构图
  7. (3.3)mysql基础深入——mysql启动深入分析
  8. PHP + Ajax处理大数据查询并导出Excel
  9. [LeetCode] questions conclusion_ Dynamic Programming
  10. CentOS.56安装Redis监控工具RedisLive