Python成长之路第五篇:Python基础之文件处理

Posted albert0924

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python成长之路第五篇:Python基础之文件处理相关的知识,希望对你有一定的参考价值。

一、文件操作

1、介绍

计算机系统分为:计算机硬件,操作系统,应用程序三部分。

 

我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

 

有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:

1、打开文件,得到文件句柄并赋值给一个变量
2、通过句柄对文件进行操作
3、关闭文件

二、在Python中

#1. 打开文件,得到文件句柄并赋值给一个变量
f=open(‘a.txt‘,‘r‘,encoding=‘utf-8‘) #默认打开模式就为r,r 代表只读

#2. 通过句柄对文件进行操作
data=f.read()   # r 代表对文件进行读操作

#3. 关闭文件
f.close()

三、f = open(‘a.txt‘,‘r‘) 的过程分析

1、由应用程序向操作系统发起系统调用open(...)

2、操作系统打开该文件,并返回一个文件句柄给应用程序

3、应用程序将文件句柄赋值给变量 f

四、强调!!!

技术分享图片
 1 # 强调第一点:
 2 打开一个文件包含两部分资源:操作系统级打开的文件 + 应用程序的变量。在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:
 3 1、f.close()  # 回收操作系统级打开的文件
 4 2、del f  # 回收应用程序级的变量
 5 
 6 其中del f
 7 一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源,
 8 而python自动的垃圾回收机制决定了我们无需考虑del f,这就要求我们,在操作完毕文件后,一定要记住f.close()
 9 
10 虽然我这么说,但是很多同学还是会忘记f.close(), 对于这些同学,我们推荐傻瓜式操作方式:使用with关键字来帮我们管理上下文
11 with open(a.txt, w) as f:     # w 只写模式,代码运行,文件存在直接清空,文件不存在,新建文件
12     pass
13 
14 with open(a.txt, r) as read_f, open(b.txt, w) as write_f:   # 同时打开两个文件
15     data = read_f.read()
16     write_f.write(data)
17 
18 强调第一点:资源回收
强调第一点:资源回收
技术分享图片
1 #强调第二点:
2 f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,在windows下是gbk,在linux下是utf-83 这就用到了字符编码的知识:若要保证不乱码,文件以什么方式存的,就要以什么方式打开。
4 
5 f=open(a.txt,r,encoding=utf-8)
强调第二点:字符编码

五、Python 2 中的 file 与 open

技术分享图片
1 #首先在python3中操作文件只有一种选择,那就是open()
2 
3 #而在python2中则有两种方式:file()与open()
4 两者都能够打开文件,对文件进行操作,也具有相似的用法和参数,但是,这两种文件打开方式有本质的区别,file为文件类,用file()来打开文件,相当于这是在构造文件类,而用open()打开文件,是用python的内建函数来操作,我们一般使用open()打开文件进行操作,而用file当做一个类型,比如type(f) is file
file 与 open

二、打开文件的模式

文件句柄 = open(‘文件路径‘, ‘模式‘,‘字符编码‘)

模式可以是以下方式以及他们之间的组合:

字符 含义
r 打开阅读,只读(默认)
w 打开写入,首先截断文件
a 打开写入,追加到文件末尾(如果存在)
b 二进制模式
t 文本模式,(默认)
+ 打开磁盘文件进行更新(读取和写入)
U 通用换行符模式(向后兼容;不应在新代码中使用)

 

  

以上是关于Python成长之路第五篇:Python基础之文件处理的主要内容,如果未能解决你的问题,请参考以下文章

Python成长之路第五篇:Python基础之装饰器

Python成长之路第五篇:Python基础之迭代器和生成器

Python之路第五篇python基础 之初识函数

python学习之路基础篇(第五篇)

Python之路第五篇:面向对象及相关

Python之路第五篇:面向对象及相关