码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-04-05 18:02:53      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:isp   一个   gpo   data   border   分享   打开文件   open()   硬盘   

一、文件操作

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基础之文件处理

标签:isp   一个   gpo   data   border   分享   打开文件   open()   硬盘   

原文地址:https://www.cnblogs.com/albert0924/p/8723517.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!