网站首页 > 技术文章 正文
一、读取 : rb(纯二进制读) , rt(后面跟着类型,直接读)
files = open('0.txt',mode='rt',encoding='utf-8')
data= files.read()
print(data)
files.close()
注意:
(1)打开文件的路径,绝对路径,相对路径
(2)mode的类型,r 表示读的操作
(3)encodeing : 表示读取数据的编码格式
(4)read : 文件对象的读取文件数据的函数
(5)如果不用上下文with的话,注意要把文件close
(6)open函数如果打开的文件没有会自动创建,有的话就打开有的,但是注意路径的格式别错误!
在打开一个文件的的时候,最好判断下文件是否存在,如何判断呢,代码如下:
import os
os.path.exists('路径') 如果存在则返回True ,反之False
在window系统中写绝对路径容易出问题,比如一个文件的绝对路径: c:\new\info.txt , 那么这么写就会报错,因为\ 后面跟着是n ,他俩组合成换行符(也可能跟着其他的),要想解决这类情况,如下:
c:\\new\\info.txt 加\\ 俩个斜杠
r'c:\new\info.txt ' 加r
二、写入 : wb(纯二进制写入) ,wt(后面跟着类型,直接写)
注意:写入文件的数据类型必须是字节类型哦,也就是unicode二进制数据类型!!!!
files = open('0.txt',mode='wb')
files.write("草拟吗".encode('utf-8'))
files.close()
因为“草拟吗”是字符串类型,所以就要将其转化为uft8编码格式下的二进制字节类型,才可以保存到文件中哦!
其实不用每次保存的数据都要进行编码转化,可以直接在open函数中配置,代码如下:
file_object = open("0.txt", mode="wt", encoding="utf-8")
file_object.write("草拟吗")
三、小案例
flag = True
file_object = open("0.txt", mode="wt", encoding="utf-8")
while flag:
name = input("请输入名字:")
password = input("请输入密码:")
data = "{} --- {}\n".format(name, password)
file_object.write(data)
flagInfo = input("您还需继续写吗,写输入1,不写输入0:")
if flagInfo == "0":
flag = False
file_object.close()
注意:如果从网上或接口获取的数据要注意类型,可能会需要数据编码的转化或直接存入文件中如果是二进制的字节类型数据!
四、打开模式
- 只读:r rt rb ---- 文件存在读,文件不存在报错 ; 默认进入光标在前面
- 只写:w wt wb ---- 文件存在,清空文件内容在写 。 文件不存在,创建一个新文件再写 ; 不管咋写光标默认都在前面
- 只写:x xt xb ---- 文件存在报错,文件不存在创建一个新文件再写
- 只写:a at ab ---- 存在尾部追加,不存在创建新的文件在写; 默认打开文件后光标在内容最后面
五、比较特殊的
(1)r+ rb+ rt+ : 读完的时候,光标就自动到最后了,如果这个时候添加内容的话,内容就在最后了
(2)w+ wb+ wt+ :
(3)a+ ab+ at+ :
六、常见功能
如果上面的r+ 换成a+,那么光标永远都会移动到内容的最后,和seek设置的光标位置无关!
光标位置如果设置移动的数量错了,会出现乱码的情况哦,因为如果说一个文件里面有汉字,是utf-8的编码格式下,那么光标移动2个的话,在写入其他数据就会出现乱码,因为在utf8编码格式下汉字是3个字节
注意:图片和视频的保存,查看就是rb 或wb 二进制,不需要设定编码格式!!!!
猜你喜欢
- 2024-11-22 正点原子I.MX6U嵌入式Linux C应用编程:第二章《文件I/O基础》
- 2024-11-22 如何将Python函数输出内容同时打印到屏幕和文件
- 2024-11-22 3个重点,20个函数分析,浅析FFmpeg转码过程
- 2024-11-22 Linux驱动基础篇:hello驱动
- 2024-11-22 Python自带的库(open函数)读写txt、csv、json、XML、Excel文件
- 2024-11-22 UG NX OPEN二次开发实例:UF,C语言编程,创建圆柱体,API文档翻译
- 2024-11-22 openGauss SEQUENCE函数
- 2024-11-22 Python文件操作的步骤
- 2024-11-22 Python读取与写入Excel模块:openpyxl
- 2024-11-22 PHP imap_open函数任意命令执行漏洞
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 505℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 485℃MySQL service启动脚本浅析(r12笔记第59天)
- 465℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 462℃启用MySQL查询缓存(mysql8.0查询缓存)
- 443℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 422℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 418℃MySQL server PID file could not be found!失败
- 最近发表
-
- netty系列之:搭建HTTP上传文件服务器
- 让deepseek教我将deepseek接入word
- 前端大文件分片上传断点续传(前端大文件分片上传断点续传怎么操作)
- POST 为什么会发送两次请求?(post+为什么会发送两次请求?怎么回答)
- Jmeter之HTTP请求与响应(jmeter运行http请求没反应)
- WAF-Bypass之SQL注入绕过思路总结
- 用户疯狂点击上传按钮,如何确保只有一个上传任务在执行?
- 二 计算机网络 前端学习 物理层 链路层 网络层 传输层 应用层 HTTP
- HTTP请求的完全过程(http请求的基本过程)
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)