当前位置:
首页 > Python基础教程 >
-
python 文件操作
什么是文件?
文件是操作系统提供给应用程序操作硬盘的的一个虚拟单位,用于应用程序将数据永久保存
1.1文件基本操作
打开文件:
f = open(r'文件的路径',mode='模式',encoding='编码类型')
f = open(r'a.txt',mode='r',encoding='unf-8')
with open(r'a.txt',mode='r',encoding='unf-8') as f: #with,不需要使用.close()
print('===>')
print(f.read())
读文件:
data=f.read() #读出文件所有的内容
print(data)
关闭文件:
f.close() #回收操作系统的资源
f.write() #写
f.read() #读
f.flush() #刷新
f.close() #关闭文件
默认的打开文件的编码是:当前操作系统默认的编码,win:gbk,linux:utf-8
f=open('a.txt',mode='r',encoding='utf-8')
print(f.read())
f.close()
1.2打开模式和文件操作 (t 模式)
文件的打开模式: t:text文本模式,读写文件是以字符串为单位,需要指定字符编码, t模式的局限性是只能读写文本文件 b:bytes字节模式,读写文件都是以bytes为单位,不需要指定字符编码 b模式的好处的是可以读写任意类型的文件
1.21 r 只读
只能读取(常用),文件不存在时报错, 文件存在,光标停在文件开头
f=open('a.txt',mode='r',encoding='utf-8') # mode='rt'
f.write('哈哈啊哈哈啊啊 啊啊123213213123\n') # 抛出异常,不能写
print(f.readable()) #true
f = open('a.txt', mode='r', encoding='utf-8') #打印一行
print(f.readline(),end='') #f.readline(5),打印前五个字符,空:默认打印一行
f.close() ##一次读一行
f = open('a.txt', mode='r', encoding='utf-8') ##读出文件所有的行存到列表中
print(f.readlines()) #['aaaaaaaaaaaaaaa eeeeeeeee\n', 'bbbbbbbbbbbbbb\n']
for line in f.readlines(): #循环文件不要使用该方式,因为在文件过大的情况下有可能会撑爆内存
print(line,end='')
1.22w 只写
写入前清空文件内容(常用), 没有文件则新建, 文件存在,光标停在文件开头
f=open(r'a1.txt',mode='w',encoding='utf-8') #默认是wt
f.write('第一行\n')
f.write('第二行\n')
f.writelines(['111111\n','222222\n','333333\n'])
f.write('aaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbb\nccccccccccccccc\n')
f.close()
1.23 a 追加
追加内容到文件末尾(常用),没有文件则新建 ,文件存在,光标停在文件末尾
f = open('a.txt', mode='a', encoding='utf-8')
print(f.writable()) #true
f.readlines() #报错
f.write('5555555555555\n')
f.writelines(['111111\n','222222\n','333333\n'])
f.close()
强调: 写文件换行符用\n 读文件换行符也是\n
1.3 打开模式和文件操作 (b 模式)
文件的打开模式b模式 强调: 1、与t模式类似不能单独使用,必须是rb,wb,ab 2、b模式下读写都是以bytes单位的 3、b模式下一定不能指定encoding参数
1.31 r 只读
只能读取(常用),文件不存在时报错
rb模式
with open('1.jpg',mode='rb') as f:
data=f.read()
print(type(data))
print(data.decode('utf-8'))
with open('db.txt',mode='rb',) as f:
data=f.read()
print(data.decode('utf-8')) #bytes-----unicode
print(type(data))
with open('1.jpg','rb') as f:
for line in f:
print(line)
1.32 w 只写
写入前清空文件内容(常用), 没有文件则新建
wb模式
with open('b.txt',mode='wb') as f:
msg='你好啊,吴三炮'
f.write(msg.encode('gbk'))
with open('b.txt',mode='wb') as f:
msg='你好啊,吴三炮'
f.write(msg.encode('utf-8'))
1.33 a 追加
追加内容到文件末尾(常用),没有文件则新建
ab模式
with open('b.txt',mode='ab') as f:
f.write('你好'.encode('utf-8'))
1.4 r+ 读写 / w+ 写读 / a+ 追加读写
with open('b.txt',mode='r+t',encoding='utf-8') as f:
print(f.readable()) #true
print(f.writable()) #true
print(f.readlines())
f.write('\n吴大炮你好\n')
for line in f.readlines():
print(line,end='')
r+b 读写二进制 / w+b 写读二进制 / a+b 追加读写二进制
1.5 文件修改
修改文件方式一: 1、先把文件内容全部读入内存 2、然后在内存中完成修改 3、再把修改后的结果覆盖写入原文件 缺点:会在文件内容过大的情况下,占用过多的内存
with open('user.txt',mode='r',encoding='utf-8') as f:
data=f.read()
data=data.replace('吴佩其','吴佩其[老男孩第二帅的人]')
with open('user.txt',mode='w',encoding='utf-8') as f:
f.write(data)
修改文件方式二:
1、以读的方式打开原文件,以写的方式打开新文件 2、读一行原文内容,写入新文件, 如果该行内容是需要修改的内容,那么修改完后再写入新文件 3、删掉原文件,将新文件名重命名为原文件名
import os
with open('user.txt',mode='rt',encoding='utf-8') as read_f,\
open('user.txt.swap',mode='wt',encoding='utf-8') as write_f:
for line in read_f:
if '吴佩其' in line:
line=line.replace('吴佩其','吴佩其[老男汉特别特别的老]')
write_f.write(line)
os.remove('user.txt')
os.rename('user.txt.swap','user.txt')
1.6 光标
with open('user.txt','r+',encoding='utf-8') as f:
f.seek(9) #偏移量的单位是字节
print(f.tell()) #获取当前光标位置
print(f.read())
with open('user.txt','r+',encoding='utf-8') as f:
f.seek(9) #偏移量的单位是字节
print(f.tell())
f.write('[老男孩第二帅的人]')
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式