Python之文件操作
文件操作
首先新建一个文件 比如 模特主妇护士班主任.txt
计算机想要访问这个文件需要经历的步骤是:
1、文件路径:d:模特主妇护士班主任.txt
2、编码方式:utf-8 gbk ....
3、操作方法:只读、只写、追加、读写、if 写读....:
4、以什么编码方式储存的文件,就以什么编码方式打开进行操作。
什么是绝对路径和相对路径?
绝对路径是文件直接存储在计算机的硬盘里,比如直接存储在C盘里、D盘里或是E盘里;
相对路径是文件没有直接存储在计算机的硬盘里,比如存储在C盘里的一个文件夹中等。
文件编码
f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,
在windows下是gbk,在linux下是utf-8。
f = open('模特主妇护士班主任',mode='r',encoding='utf-8')
只读文件:'r'代表只读方式 'rb'直接编码成bytes类型(非文字文件,还有就是上传和下载)
1.读文件的第一种方式:read方法,用read方法会一次性的读出文件中的所有内容
f = open('模特主妇护士班主任',mode='r',encoding='utf-8')
content = f.read()
print(content)
f.close()
2.读一部分内容:read(n),指定读n个单位
print(f.read(5))
3.读文件的第三种方式:按照行读,每次执行readline就会往下读一行
print('readline : ',content.strip()) #strip去掉空格、制表符、换行符
content2 = f.readline()
print(content2.strip())
print(1) #--> 1n
print('1n') #--> 1nn
4.读文件的第四种方式:readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表
content = f.readlines()
print('readlines : ',content)
5.读:最常用 for循环
f = open('模特主妇护士班主任,encoding='utf-8')
for l in f:
print(l.strip())
关闭文件 f.close() 必须在程序最后加上这个,可以清理内存。
f = open('模特主妇护士班主任',mode='rb',)
content = f.read()
print(content)
f.close()
只写文件:只写:w 没有此文件,就会创建文件
#对于w:没有此文件就会创建文件
f = open('log',mode='w',encoding='utf-8')
f.write('骑兵步兵')
f.close()
先将源文件的内容全部清除,在写。
f = open('log',mode='w',encoding='utf-8')
f.write('附近看到类似纠纷')
f.close()
f = open('log',mode='w+',encoding='utf-8')
f.write('aaa')
f.seek(0)
print(f.read())
f.close()
f = open('log',mode='wb')
f.write('附近看到类似纠纷'.encode('utf-8'))
f.close()
追加
f = open('log',mode='a',encoding='utf-8')
f.write('佳琪')
f.close()
f = open('log',mode='a',encoding='utf-8')
f.write('佳琪')
f.close()
# 带+号的增加有附带功能,比如r+代表在只读的情况下增加了写的功能,代表先读后写,其余的情况类似。
其他功能详解
obj = open('log',mode='r+',encoding='utf-8')
content = f.read(3) # 读出来的都是字符
f.seek(3) # 是按照字节定光标的位置
f.tell() 告诉你光标的位置
print(f.tell())
content = f.read()
print(content)
f.tell()
f.readable() # 是否刻度
line = f.readline() # 一行一行的读
line = f.readlines() # 每一行当成列表中的一个元素,添加到list中
f.truncate(4)
for line in f:
print(line)
f.close()
seek 是按照字节移动光标
tell 是告诉你目前光标的位置
例题:用户先注册账号和密码到一个文件里,然后等待用户登录,从文件里调出注册的账号和密码与之比较,正确登陆成功,允许有三次错误登陆机会
username = input('请输入你要注册的用户名:')
password = input('请输入你要注册的密码:')
with open('list_of_info',mode='w',encoding='utf-8') as f:
f.write('{}n{}'.format(username,password))
print('恭喜您,注册成功')
lis = []
i = 0
while i < 3:
usn = input('请输入你的用户名:')
pwd = input('请输入你的密码:')
with open('list_of_info',mode='r+',encoding='utf-8') as f1:
for line in f1:
lis.append(line)
if usn == lis[0].strip() and pwd == lis[1].strip():
print('登录成功')
break
else:print('账号和密码错误')
i+=1
总结:
# 文件处理
# 打开文件
#open('路径','打开方式','指定编码方式')
# 打开方式 r w a r+ w+ a+ b 用的最多就是r w a ,带+号的一般不用,不管是先读后写还是先写后读都会让光标发生变化,
# 所以最好读写不要在一起
#r+ 打开文件直接写 和读完再写
# 编码方式 —— utf-8
# 操作文件
# 读
# read 一次性读
# readlines 一次性读
# readline 一行一行读
#不知道在哪儿结束
#视频 图片 rb bytes 按照字节读
# for循环 —— 最好!!!
# 写
# write
# 光标 —— 文件指针
#seek _ 指定光标移动到某个位置
#tell _ 获取光标当前的位置
#truncate _ 截取文件
# 关闭文件
#close
修改文件实例
修改文件
思路:把原有文件的内容先修改,然后把修改后的文件全部放在一个新的空文件里,把原文件删除
with open('小护士班主任',encoding='utf-8') as f,open('小护士班主任.bak','w',encoding='utf-8') as f2:
for line in f:
if '星儿' in line: #班主任:星儿
line = line.replace('星儿','啊娇')
#写文件
f2.write(line) #小护士:金老板
import os
os.remove('小护士班主任') #删除文件
os.rename('小护士班主任.bak','小护士班主任') #重命名文件
- 以太坊·将数据写入到区块链中
- 如何使用Faster R-CNN来计算对象个数
- hyperledger v1.0.5 区块链运维入门
- 在TensorBoard中使用t-SNE实现TensorFlow自动编码器的可视化嵌入
- 以太坊智能合约开发入门
- CatBoost:一个自动处理分类(CAT)数据的机器学习库
- Python机器学习的练习八:异常检测和推荐系统
- Blade 模板中有关 section 的那些事
- 分布式计划任务设计与实现
- 怎样在Python的深度学习库Keras中使用度量
- 网络设备配置管理与版本控制
- 使用Python对Instagram进行数据分析
- 解决多标签分类问题(包括案例研究)
- Docker Compose + GPU + TensorFlow = Heart
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CS学习笔记 | 21、反向转发通道的建立
- CS学习笔记 | 22、通过SSH开通通道
- 一文搞懂 java -jar 发生了什么
- 树莓派4裸机基础教程:环境搭建
- Oh! Binlog还能这样用之Canal篇
- docker安装elasticsearch和head插件
- redis学习(十六)
- 商业鬼才教你 策略模式
- 为什么StringBuilder是线程不安全的?
- (四)Hive分区、分桶
- Redis的各种数据类型实践-Set
- 快速学习-RocketMQ权限控制
- 快速学习-RocketMQ DefaultMQProducer
- 快速学习-Jenkins CLI自动补全
- 快速学习-Jenkins CLI计算节点