python 全栈开发 - Day7 文件处理
一 文件操作
一 介绍
计算机系统分为: 计算机硬件, 操作系统, 应用程序三部分
我们用 python 或其他语言编写的应用程序若想要把数据永久保存下来, 必须要保存于硬盘中, 这就涉及到应用程序要操作硬件, 众所周知, 应用程序是无法直接操作硬件的, 这就用到了操作系统操作系统把复杂的硬件操作封装成简单的接口给用户 / 应用程序使用, 其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念, 用户或应用程序通过操作文件, 可以将自己的数据永久保存下来
有了文件的概念, 我们无需再去考虑操作硬盘的细节, 只需要关注操作文件的流程:
- #1. 打开文件, 得到文件句柄并赋值给一个变量
- #2. 通过句柄对文件进行操作
- #3. 关闭文件
二 在 python 中
- #1. 打开文件, 得到文件句柄并赋值给一个变量 f=open(a.txt,r,encoding=utf-8) #默认打开模式就为 r
- #2. 通过句柄对文件进行操作 data=f.read()
- #3. 关闭文件 f.close()
三 f=open(a.txt,r) 的过程分析
- #1 由应用程序向操作系统发起系统调用 open(...)
- #2 操作系统打开该文件, 并返回一个文件句柄给应用程序
- #3 应用程序将文件句柄赋值给变量 f
四 强调!!!
- # 第一点: 打开一个文件包含两部分资源: 操作系统级打开的文件 + 应用程序的变量在操作完毕一个文件时, 必须把与该文件的这两部分资源一个不落地回收, 回收方法为:
- 1f.close() #回收操作系统级打开的文件
- 2del f #回收应用程序级的变量 其中 del f 一定要发生在 f.close() 之后, 否则就会导致操作系统打开的文件还没有关闭, 白白占用资源, 而 python 自动的垃圾回收机制决定了我们无需考虑 del f, 这就要求我们, 在操作完毕文件后, 一定要记住 f.close() 虽然我这么说, 但是很多同学还是会很不要脸地忘记 f.close(), 对于这些不长脑子的同学, 我们推荐傻瓜式操作方式:
使用 with 关键字来帮我们管理上下文
- with open(a.txt,w) as f:
- pass
- with open(a.txt,r) as read_f,open(b.txt,w) as write_f:
- data=read_f.read()
- write_f.write(data)
二 打开文件的模式
文件句柄 = open(文件路径, 模式, 字符编码)
模式可以是以下方式以及他们之间的组合:
Character | Meaning |
‘r‘ | open for reading (default) |
‘w‘ | open for writing, truncating the file first |
‘a‘ | open for writing, appending to the end of the file if it exists |
‘b‘ | binary mode |
‘t‘ | text mode (default) |
‘+‘ | open a disk file for updating (reading and writing) |
‘U‘ | universal newline mode (for backwards compatibility; should not be used in new code) |
#1. 打开文件的模式有 (默认为文本模式):
r , 只读模式默认模式, 文件必须存在, 不存在则抛出异常
- with open("duoduo.txt",mode=r,encoding=utf-8") as f:
- print(f.read())
w, 只写模式不可读; 不存在则创建; 存在则清空内容
- with open("duoduo.txt",mode=w,encoding=utf-8") as f:
- print(f.write("duoduo666"))
a, 之追加写模式不可读; 不存在则创建; 存在则只追加内容
- with open("duoduo.txt",mode=a,encoding=utf-8") as f:
- print(f.write("77777777"))
三 操作文件的方法
未完待续
来源: http://www.bubuko.com/infodetail-2535466.html