文件操作

本节主要内容

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(‘新变量名‘,一般就是老名——副本,‘文件名’)把新名字改回去          

这样最大的问题就是一次写太多,内存容易爆炸
用循环一句一句的就没事了
import os
with open(‘文件名’,mode=‘r',encoding=’utf-8')as f1,\
open9(’文件名2‘,mode=’w',encoding=‘utf-8’)as f2:
for   i  in  f1
变量=i。replace(‘ ’,‘ ’)
f2.write(变量)
os。remove(‘文件名’)
os。rename(‘文件名2’,”文件名“)

转载于:https://www.cnblogs.com/Mrszhao/p/9454859.html

py 的 第 8 天相关推荐

  1. 汉字的首拼音字母生成

    生成助记码(取汉字的第一个字母) SET NOCOUNT ON GO IF EXISTS(SELECT name    FROM   sysobjects    WHERE  name = N'hzp ...

  2. 解决 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 ...

  3. 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 ...

  4. cygwin执行.py提示找不到模块,但已经安装模块的解决办法

    . 在解决了cygwin中make命令不能使用的问题之后(https://www.cnblogs.com/zhenggege/p/10724122.html),make maskrcnn路径下的set ...

  5. django系列 1 :python+django环境搭建 +mac提示找不到manage.py命令

    1.安装python3 2.设置python3的环境变量 3.进入命令行模式,输入 pip install django 1.10.3 4.验证是否安装完成 pip show django 5.dja ...

  6. svn官方备份hot-backup.py强烈推荐

    Author:牛班图 Date:2016/05/18 Address:suzhou --- centos 6.7默认安装的python是2.6.6,大家可以先查看一下自己操作系统的python版本,p ...

  7. python 一张图画多条线_Gnuplot.py在一张图上绘制多条线

    我目前正试图使用gnuplot py从文本文件中绘制多行.我可以分别绘制两条线,但当我试图在同一个图上绘制它们时,它只绘制一条线.在 这是我的代码:#!/usr/bin/env python impo ...

  8. python中init和setup有什么区别_python – 为什么setup.py在安装期间运行模块__init__.py?...

    我正在使用setup.py安装包: python setup.py install 我正在安装的软件包中的__init__.py包含一些软件包级别检查,其中一个检查settings.py中是否有可用的 ...

  9. keras 的 example 文件 pretrained_word_embeddings.py 解析

    该代码演示了 采用预定义的词向量 来进行文本分类的功能. 数据集采用的是 20_newsgroup,18000篇新闻文章,一共涉及到20种话题,训练神经网络,给定一个新闻,可以识别出是属于哪一类的新闻 ...

  10. keras 的 example 文件 neural_doodle.py 解析

    这是一个电脑学习涂鸦的程序 在不指定 content-image 的时候,运行指令如下: python neural_doodle.py --nlabels 4 --style-image Monet ...

最新文章

  1. 去除警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
  2. 学习笔记Spark(三)—— Spark架构及原理(spark架构、spark RDD)
  3. Android x86 下运行纯ARM版APP
  4. 嵌入式系统串口解析二进制数_嵌入式系统Bootloader分析及DSP56F800串口加载功能实现...
  5. mysql text保存图片_用mysql 如果包含有文字和图片,那么我要用哪种数据类型存储呢?还是分开,用TEXT和BLOB吗?...
  6. Linux 操作系统下常见信号详解
  7. 深圳市房事与公积金相关疑问
  8. 音乐标签编辑器 Meta 2.0.0 for Mac
  9. oracle 导入性能,EXP,EXPDP数据导入本地性能测试的一点心得
  10. SQL Server 2008 R2 建立数据库,建立表,建立存储过程
  11. Vue周日历展示大学课程
  12. STC 51单片机仿真总结
  13. protocal buffer repeate 关键字
  14. vue 组件自己调用自己
  15. 语音(一)| 语音识别基础(深度解析)
  16. Docker官方文档翻译1
  17. 浏览器突然访问不了某个网址或者提示无法访问此网站
  18. 如何在线制作gif图片?
  19. 如何实现接口统一入口_网易考拉Android App如何实现统一弹框
  20. 夜游灯光秀如何激活城市经济发展

热门文章

  1. SQL Server安全(11/11):审核(Auditing)
  2. xmake高级特性之自定义选项
  3. 菜鸟学SSH(八)——Hibernate对象的三种状态
  4. yum 安装报Header V3 DSA signature: NOKEY 的错
  5. Windows环境变量
  6. 一线大厂为什么对免费的开源项目这么热衷?
  7. 真实集群中Flink命令行各种模式提交wordcount
  8. HADOOP_MAPRED_ROOT_LOGGER has been replaced by HADOOP_ROOT_LOGGER
  9. ubuntu中clion更换cmake版本以及文本背景颜色
  10. 计算机专业都学什么科,大学本科计算机专业都有什么科目?