一、文件操作步骤

step1:打开文件,得到文件句柄并赋值给一个变量
step2:通过句柄对文件进行操作
step3:关闭文件

举例:

a = open('hello world', 'r', encoding = 'utf-8')    #打开 ‘hello world’ 文件,得到文件句柄并赋值给一个变量 a
data = a.read() #通过句柄对文件进行读操作
a.close() #关闭文件

注意事项一:

关于 a.close() 关闭文件

打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。
在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:

1、f.close() #回收操作系统级打开的文件
2、del f #回收应用程序级的变量

其中del f一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源。
而python自动的垃圾回收机制决定了我们无需考虑del f。
这就要求我们,在操作完毕文件后,一定要记住f.close()

简单的来说,每 open() 一个文件,就要求我们必须 close()

用关键字 with ,可以使用 close()

with open('hello world', 'r', encoding = 'utf-8') as a:
data = a.read()
print(data) 等同于 a = open('hello world', 'r', encoding = 'utf-8')
data = a.read()
print(data)
a.close()

注意事项二:

关于 open() 文件时编码方式的问题

如果我们在 open() 文件的时候不说明编码方式的时候,系统默认的是按照操作
系统的编码方式来(windows操作系统编码方式是gbk,linux操作系统编码方式是utf-8)
所以为了避免不乱码、不报错 文件以什么编码方式保存的,就要以什么编码方式打开

二、关于文件操作模式

r,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
a,追加写模式【不可读;不存在则创建;存在则只追加内容】

1.‘r’ 只读模式

open() 文件时,如果不指定操作方式,默认为只读模式

读操作的相关函数:

.read()

功能:对文件进行读操作,读取全部文件全部内容

.readable()

功能:判读文件是否可读

举例:

a = open('helloworld', 'r', encoding = 'utf-8')
date = a.read()
print(date)
print(a.readable()) #判断文件是否可读,是的话返回True
a.close() a = open('helloworld', 'w', encoding = 'utf-8')
print(a.readable()) #判断文件是否可读,否的话返回True
a.close()

.readline()

功能:读取文件的一行内容

举例:
a = open('helloworld', 'r', encoding = 'utf-8')
print(a.readline())
print(a.readline())
print(a.readline())
a.close() #执行结果:
aaaaa bbbbb ccccc
#获取的每一行中间会有一个空白行间隔,那是因为每一行默认有一个换行符
#通过以下方式可以去掉间隔行 a = open('helloworld', 'r', encoding = 'utf-8')
print(a.readline(),end = '')
print(a.readline(),end = '')
print(a.readline(),end = '')
a.close()
#执行结果
aaaaa
bbbbb
ccccc

.readlines()

功能:读取文件每一行内容,并将每一行内容存放在一个列表里

举例:
a = open('helloworld', 'r', encoding = 'utf-8')
print(a.readlines())
a.close() #执行结果
['aaaaa\n', 'bbbbb\n', 'ccccc\n', 'ddddd']

2.‘w’ 只写模式

在写模式下,执行文件
如果文件存在,将文件内容清空再执行其他操作
如果文件不存在,新建该文件

写操作的相关函数

.write()

功能:针对文本模式的写,需要自己写换行符

举例:
a = open('helloworld', 'w', encoding = 'utf-8')
a.write('aaaa\n')
a.write('bbbb\n')
a.close()
#将文件内容清空,在执行写操作

.writelines()

功能:以列表形式写文件

举例:
a = open('helloworld', 'w', encoding = 'utf-8')
a.writelines(['aaaa\n', '1111\n'])
a.close()

.writeable()

功能:判断文件是否可写

举例:
a = open('helloworld', 'w', encoding = 'utf-8')
print(a.writable())
a.close #执行结果
True

注意:
在给文件写内容是,写的参数必须是字符串类型,如果写入其他类型会报错

3.‘a’模式 追加写模式

举例:
a = open('helloworld', 'a', encoding = 'utf-8')
a.write('追加到最后一行')
a.close()

任务:
打开一个文件,保留其第二行内容

src_f = open('helloworld', 'r', encoding = 'utf-8')
data = src_f.readlines()
src_f.close()
print(data)
dst_f = open('helloworld', 'w', encoding = 'utf-8')
dst_f.write(data[1])
dst_f.close()

写在后面:

最近都好忙,在忙着发学院会议论文、忙着发ccc会议论文、忙着写开题报告、忙着投专利

总感觉自己效率不是很高

自己也一直想办法  努力提高自己效率

好好加油吧

不要在忙碌中迷失了自我

不要忘记最初的梦想

我觉得,最可贵的事情  就是在不断的成长过程中

保持那颗善良的心  坚持自己的梦想

一直想去大城市闯闯

虽然过来的人总和我说   一个人在外  太不容易

我好想一直就是个倔强的人

我一直想证明  我是一个厉害的小伙郭

加油啦

Python小白学习之路(十九)—【文件操作步骤】【文件操作模式】的更多相关文章

  1. Python小白学习之路(九)—【字符串格式化】【百分号方式】【format方式】

    写在前面: 最近的事情好像有很多.李咏的离去,让我觉得很突然,仿佛印象中就是主持节目的他,看着他和哈文的爱情,很是感动.离去,没有什么抱怨,只是遗憾. 总会感慨,时光的流逝. 好像真的很快,转眼间,我 ...

  2. Python小白学习之路(二十)—【打开文件的模式二】【文件的其他操作】

    打开文件的模式(二) 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码.图片文件的jgp格 ...

  3. Python小白学习之路(十)—【函数】【函数返回值】【函数参数】

    写在前面: 昨天早睡之后,感觉今天已经恢复了百分之八十的样子 又是活力满满的小伙郭 今日份鸡汤: 我始终相信,在这个世界上,一定有另一个自己,在做着我不敢做的事,在过着我想过的生活.-------宫崎 ...

  4. Python小白学习之路(二十六)—【if __name__ =='__main__':】【用状态标识操作】

    规则一: 一个python文件中,只写一些可以运行的功能测试代码写在这句代码下面 if __name__ =='__main__': 在讲这边的时候,我不是很懂参考了一篇博客,地址如下:http:// ...

  5. Python小白学习之路(十八)—【内置函数三】

    一.对象操作 help() 功能:返回目标对象的帮助信息 举例: print(help(input)) #执行结果 Help on built-in function input in module ...

  6. Python小白学习之路(十五)—【map()函数】【filter()函数】【reduce()函数】

    一.map()函数 map()是 Python 内置的高阶函数 有两个参数,第一个是接收一个函数 f(匿名函数或者自定义函数都OK啦):第二个参数是一个 可迭代对象 功能是通过把函数 f 依次作用在 ...

  7. Python小白学习之路(二十四)—【装饰器】

    装饰器 一.装饰器的本质 装饰器的本质就是函数,功能就是为其他函数添加附加功能. 利用装饰器给其他函数添加附加功能时的原则: 1.不能修改被修饰函数的源代码        2.不能修改被修饰函数的调用 ...

  8. Python小白学习之路(二十二)—【生成器】

    一.什么是生成器? 生成器可以理解成是一种数据类型,特殊地是生成器可以自动实现迭代器协议其他的数据类型需要调用自己内置的__iter__方法所以换种说法,生成器就是可迭代对象 !回忆:很重要的迭代器协 ...

  9. Python小白学习之路(十六)—【内置函数一】

    将68个内置函数按照其功能分为了10类,分别是: 数学运算(7个) abs()   divmod()  max()  min()  pow()  round()  sum() 类型转换(24个) bo ...

随机推荐

  1. 2018.10.02 NOIP模拟 聚会(前缀和)

    传送门 今天的签到题. 直接前缀和处理一下就秒了. 然而考试的时候智障用线段树维护被卡成了30分,交到OJ一测竟然有100? 搞得我都快生无可恋了. 如果用线段树来做可以类比这道题的写法,直接维护区间 ...

  2. 2018.08.31 bzoj1419 Red is good(期望dp)

    描述 桌面上有R张红牌和B张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1美元,黑牌则付 出1美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. 输入 一行输入两个数R,B,其 ...

  3. Linux下编译与调试

    gcc/g++编译器 对于.c格式的C文件,可以采用gcc或g++编译 对于 .cc..cpp格式的C++文件,应该采用g++进行编译 常用的选项: -c  表示编译源文件 -o  表示输出目标文件 ...

  4. gj12-1 协程和异步io

    1 并发.并行.同步.异步.阻塞.非阻塞 并发.并行 并发是报一个时间段内有几个程序在同一个cpu上运行,但是任意时刻只有一个程序在cpu上运行.在一个时间段内某一个请求很快,能够响应的用户就越多,高 ...

  5. _variant_t与其他数据类型的转换

    转自:http://kuaixingdong.blog.hexun.com/29627840_d.html 我们先看看COM所支持的一些类型的基本类: (微软提供,在comdef.h中定义) 在COM ...

  6. eclipse 安装

    做一个项目,需要搭建环境.使用sql server 2005,tomcat,eclipse.过程真复杂,碰到些小问题,不过都解决了,还算顺利. win7下sql server 2005安装:http: ...

  7. aop的概述

    支付部分,定义IPayService接口并定义支付方法“pay”,并定义了两个实现:“PointPayService”表示积分支付,“RMBPayService”表示人民币支付:并且在每个支付实现中支 ...

  8. Git Commit 标准化

    1 前言Git Commit Message 应该清晰明了,要用精简的语言说明本次提交的目的,其主要作用是为了后续的搜索.版本的回滚.合并冲突的追溯等操作. 我们在开发时一直以来对 Git Commi ...

  9. oauth入门

    oauth可以支持跨网站的数据传输.假设一个用户把照片上传到faji网站,然后想登录到beppa网站(照片打印),把faji的上照片打印出来. 她当然可以自己把照片取下来再上传上去,不过比较麻烦. 使 ...

  10. TFS支持移动设备,微软已经走出了第一步(手机上更新、查询工作项)

    TFS支持移动设备,微软已经走出了第一步! 从现在开始,你可以在手机浏览器上打开自己的VSTS团队项目,会看大手机版的工作项界面,你可以在手机设备上更新.查询工作项. 这是原生自带的,这些移动功能马上 ...