py 的 第 8 天
文件操作
本节主要内容
1初识文件操作
2只读 r,rb 只写w,wb追加a,ab r+读写,w+写读,a+写读(追加写读)
3其他的操作方法
4文件的修改以及另一种打开文件句柄的方式
主要内容
一初识文件操作
使用py来读写文件是很简单的操作,我们使用open()函数来打开一个文件,获取到文件的句柄,然后通过文件句柄就可以进行各种各样的操作了,根据打开方式的不同能够执行的操作也会有相应的差异 打开文件方式r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b默认使用的是r(只读)模式
二只读操作(r,rb)
变量名=open(‘文件夹名’,mode=‘r',encoding=’utf-8‘这个码看情况,一般pycharm也就这样了
新变量名=变量名。read() 这是读就用read 这两个单词还是认识的,写是。。。。
print(新变量名)
变量名。close() 这就是关闭上面的变量
注意encodin表示编码集,根据文件实际弄,只是我们更多的用utf-8
rb读取出来的数据事bytes类型,在rb模式下,不能选择encoding字符集
变量名=open(‘文件名’,mode=‘rb’)
新变量名=f。read()
print(新变量名)
f。closr
结果就是一堆字节
rb的作用:读取非文本文件的时候,比如读取mp3.图像。视频等信息的时候用
绝对路径和相对路径
1绝对路径:从磁盘的根目录开始一直到文件名。
2相对路径:同一文件夹下的文件。相对于当前这个程序所在的文件夹而言。如果在同一个文件夹中,则相对路径就是这个文件名,如果在上一层文件夹。则要。。。/
推荐大家使用相对路径,这样吧程序拷贝给别人的时候,直接把羡慕拷贝走就能运行,如果要绝对路径,就要拷贝外部文件了。
1.read()将文件中的内容全部读取出来,弊端:占内存,如果文件过大,容易导致内存崩溃。
2.read(n)这个N写的是几就读前几个字,再读是从n后面开始读,不是从头开始,rb就是读n个字节
3readline()一次读取一行数据,注意:readline()结尾,注意每次读取出来的数据都会有一个\n
所以呢,需要我们使用 strip()方法来去掉\n或者空格
4.readlines()将每一行形成一个元素,放到一个列表中,将所有的内容都读取出来,所以也是容易内存崩
5.循环读取 这种方式是最好的,每次读取一行内容,不会产生内存溢出的问题。
变量=open(‘文件名’,mode=‘r',encoding=’utf-8‘)
for i(可自定名) in 变量:
i 循环
读取完文件句柄一定要关闭
三 写模式(w,wb)
写的时候注意,如果没有文件,则会创建文件,如果文件存在则把原文件内容删除,再写入新内容
变量=open(‘文件名’,mode=‘w',encoding=’utf-8‘)
变量。write(’想写的‘)
变量。flush() 养成刷新的好习惯
变量。close 关闭也是好习惯
wb模式下。可以不指定打开文件的编码,但在写文件的时候必须将字符串转化成utf-8的bytes数据
变量=open(‘文件名“,mode=”wb“)
变量。write(’想写的”,encoding=“utf-8‘)
刷新 关闭 不推荐这样反正也要写,还是从头就开始
四增加(a,ab)
我们写入的文件会在追加在文件的结尾
变量=open(‘文件名’,mode=‘a’,‘utf-8’)
变量。write(“”)
刷新 关闭
五 读写模式 r+ r+b
对于读写模式,必须是先读,因为默认光标是在开头的,准备读取的,在读取完了之后再进行写入,我们以后使用频率最高的就是r+
变量=(‘文件名’,mode=r+,‘utf-8’)
新变量=变量。read()
变量。write (‘想写的’)
print(新变量) r+模式一定要先读取再写入 这个不管你读几个,写的话永远在最后写,就算修改光标
妈的 r+先写后读也行,就是你写几个光标向后移几个,读的时候按光标走,就算是字符串类型的数字‘1’ utf-8的编码 字节和汉字也不一样,要注意
六 写读(w+,w+b)
先将所有内容都清空,然后写入最后读取,但是读取的内容是空,一般不常用,调节光标可以选择读入,挑光标也没用
七,追加读(a+)
a+模式下无论先读还是后读都是读取不到数据的
还有就是把字符换成字节而已,不赘述了
八,其他相关操作
seek 光标操作 变量。seek(n) 才可以 n代表的是位置 用的是byte 所以使用utf-8的中要是3的倍数
seek(0)移动到开头,seek(0,2)移动到结尾 也可以直接加数字移动的是字节
tell() 变量。tell() 查询光标的位置 这个感觉实在没用
truncate(n) 这个操作比较多,再组合组合前面的给的操作,读取,光标位置什么的
这个n是数字,不管怎么切,都是从头切,这个n和光标一样都是移动的字节。
想要再读取截断后的段落,移动光标为0,否则一直读取原文件,原文件读取完毕也不读取新文件
截断会截到目标位置或光标位置
九修改文件
只能将文件中的内容读取到内存中,将信息修改完毕,将原文件删除,把新文件的名改成老文件
import os
with open(‘文件名’,mode=‘r',encoding=‘utf-8’)as f1\
open(‘文件名2’,mode=‘w',encoding=‘utf-8’)as f2:
变量名=f.read()
新变量名=变量。replace(‘ ’, “”)
f2。write(新变量名)
os。remove(‘文件名’)
os。rename(‘新变量名‘,一般就是老名——副本,‘文件名’)把新名字改回去
转载于:https://www.cnblogs.com/Mrszhao/p/9454859.html
py 的 第 8 天相关推荐
- 汉字的首拼音字母生成
生成助记码(取汉字的第一个字母) SET NOCOUNT ON GO IF EXISTS(SELECT name FROM sysobjects WHERE name = N'hzp ...
- 解决 win10 pycurl安装出错 Command python setup.py egg_info failed with error code 10 编译安装包 安装万金油...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/yexiaohhjk/article/d ...
- SyntaxError: Non-ASCII character ‘\xe5‘ in file(xxlrt_1.py) on line 7, but no encoding declared;
具体报错如下: SyntaxError: Non-ASCII character '\xe5' in file /home/hly/work/python/work/xlrt_1.py on line ...
- cygwin执行.py提示找不到模块,但已经安装模块的解决办法
. 在解决了cygwin中make命令不能使用的问题之后(https://www.cnblogs.com/zhenggege/p/10724122.html),make maskrcnn路径下的set ...
- django系列 1 :python+django环境搭建 +mac提示找不到manage.py命令
1.安装python3 2.设置python3的环境变量 3.进入命令行模式,输入 pip install django 1.10.3 4.验证是否安装完成 pip show django 5.dja ...
- svn官方备份hot-backup.py强烈推荐
Author:牛班图 Date:2016/05/18 Address:suzhou --- centos 6.7默认安装的python是2.6.6,大家可以先查看一下自己操作系统的python版本,p ...
- python 一张图画多条线_Gnuplot.py在一张图上绘制多条线
我目前正试图使用gnuplot py从文本文件中绘制多行.我可以分别绘制两条线,但当我试图在同一个图上绘制它们时,它只绘制一条线.在 这是我的代码:#!/usr/bin/env python impo ...
- python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...
我正在使用setup.py安装包: python setup.py install 我正在安装的软件包中的__init__.py包含一些软件包级别检查,其中一个检查settings.py中是否有可用的 ...
- keras 的 example 文件 pretrained_word_embeddings.py 解析
该代码演示了 采用预定义的词向量 来进行文本分类的功能. 数据集采用的是 20_newsgroup,18000篇新闻文章,一共涉及到20种话题,训练神经网络,给定一个新闻,可以识别出是属于哪一类的新闻 ...
- keras 的 example 文件 neural_doodle.py 解析
这是一个电脑学习涂鸦的程序 在不指定 content-image 的时候,运行指令如下: python neural_doodle.py --nlabels 4 --style-image Monet ...
最新文章
- 去除警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
- 学习笔记Spark(三)—— Spark架构及原理(spark架构、spark RDD)
- Android x86 下运行纯ARM版APP
- 嵌入式系统串口解析二进制数_嵌入式系统Bootloader分析及DSP56F800串口加载功能实现...
- mysql text保存图片_用mysql 如果包含有文字和图片,那么我要用哪种数据类型存储呢?还是分开,用TEXT和BLOB吗?...
- Linux 操作系统下常见信号详解
- 深圳市房事与公积金相关疑问
- 音乐标签编辑器 Meta 2.0.0 for Mac
- oracle 导入性能,EXP,EXPDP数据导入本地性能测试的一点心得
- SQL Server 2008 R2 建立数据库,建立表,建立存储过程
- Vue周日历展示大学课程
- STC 51单片机仿真总结
- protocal buffer repeate 关键字
- vue 组件自己调用自己
- 语音(一)| 语音识别基础(深度解析)
- Docker官方文档翻译1
- 浏览器突然访问不了某个网址或者提示无法访问此网站
- 如何在线制作gif图片?
- 如何实现接口统一入口_网易考拉Android App如何实现统一弹框
- 夜游灯光秀如何激活城市经济发展
热门文章
- SQL Server安全(11/11):审核(Auditing)
- xmake高级特性之自定义选项
- 菜鸟学SSH(八)——Hibernate对象的三种状态
- yum 安装报Header V3 DSA signature: NOKEY 的错
- Windows环境变量
- 一线大厂为什么对免费的开源项目这么热衷?
- 真实集群中Flink命令行各种模式提交wordcount
- HADOOP_MAPRED_ROOT_LOGGER has been replaced by HADOOP_ROOT_LOGGER
- ubuntu中clion更换cmake版本以及文本背景颜色
- 计算机专业都学什么科,大学本科计算机专业都有什么科目?