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-8。
3 这就用到了字符编码的知识:若要保证不乱码,文件以什么方式存的,就要以什么方式打开。
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 通用换行符模式(向后兼容;不应在新代码中使用)

  

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

时间: 2024-10-14 04:38:37

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

python成长之路第三篇(1)_初识函数

目录: 函数 1.为什么要使用函数 2.什么是函数 3.函数的返回值 4.文档化函数 5.函数传参数 文件操作(二) 1.文件操作的步骤 2.文件的内置方法 函数: 一.为什么要使用函数 在日常写代码中,我们会发现有很多代码是重复利用的,这样会使我们的代码变得异常臃肿,比如说: 我们要写一个验证码的功能 例子: 比如说我们要进行一些操作,而这些操作需要填写验证码 验证码代码:  1 import random   2 number_check = ''   3 for i in range(0,

python成长之路第三篇(4)_作用域,递归,模块,内置模块(os,ConfigParser,hashlib),with文件操作

打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.作用域 2.递归 3.模块介绍 4.内置模块-OS 5.内置模块-ConfigParser 6.内置模块-hashlib 7.with文件操作 代码执行环境默认为3.5.1 一.作用域 (1)什么是作用域,官方来说作用域就是就是有不同的命名空间,就像下面的代码一样,a=1它的作用域是全局的,也在全局的命名空间当中,当函数 action中的a=2它就在局部的作用域中,也在局部的命名空间当中. a = 1def

我的Python成长之路---第三天---Python基础(13)---2016年1月16日(雾霾)

五.Python的常用的内置函数 Python为我们准备了大量的内置函数,如下图所示 这里我们只讨论红框内的内置函数 abs(x) 返回一个数的绝对值(模),参数可以是真说或浮点数 >>> abs(-10) 10 all(iterable) 如果可迭代对象(列表.元祖等)中所有的元素都是True,则返回True,否则返回False.相当于and >>> all([1, True, 1 == 1]) True any(iterable) 如果可迭代对象中任意一个元素是Tr

python成长之路第三篇(2)_正则表达式

打个广告欢迎加入linux,python资源分享群群号:478616847 目录: 1.什么是正则表达式,python中得正则简介 2.re模块的内容 3.小练习 一.什么是正则表达式(re) 正则表达式相信很多人都熟悉了,在python中正则表达式的支持是通过re(regular expression)模块,正则表达式是可以匹配文本片段的模式,简单的是正则表达式就是普通的字符串,可以处理字符串.也就是说正则表达式的存在就是来处理文本字符串的 下面来熟悉下正则中的几个概念: 1.通配符 通配符是

python成长之路【第九篇】:网络编程

一.套接字 1.1.套接字套接字最初是为同一主机上的应用程序所创建,使得主机上运行的一个程序(又名一个进程)与另一个运行的程序进行通信.这就是所谓的进程间通信(Inter Process Communication,IPC).有两种类型的套接字:基于文件的和面向网络的. 第一种:基于文件的 因为两个进程运行在同一台计算机上,所以这些套接字都是基于文件的,这意味着文件系统支持他们的底层基础结构.这是能够说的通的,因为文件系统是一个运行在同一个主机上的多个进程之间的共享常量.第二种:基于网络的 基于

Python成长之路【第二篇】Python基础之数据类型

阅读目录 简介 1 什么是数据? x=10,10是我们要存储的数据 2 为何数据要分不同的类型 数据是用来表示状态的,不同的状态就应该用不同的类型的数据去表示 3 数据类型 数字(整形,长整形,浮点型,复数) 字符串 列表 元组 字典 集合 4 如何学习 #一:基本使用 1 用途 2 定义方式 3 常用操作+内置的方法 #二:该类型总结 1 存一个值or存多个值 只能存一个值 可以存多个值,值都可以是什么类型 2 有序or无序 3 可变or不可变 !!!可变:值变,id不变.可变==不可hash

我的Python成长之路---第三天---Python基础(12)---2016年1月16日(雾霾)

四.函数 日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现.在编程的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代码调用. 假设我们在编程过程中需要计算圆形的面积.如果我们不是用函数,每次需要计算原型面积的时候都需要这样 1 r1 = 12.34 2 r2 = 9.08 3 r3 = 73.1 4 s1 = 3.14 * r1 * r1 5 s2 = 3.14 * r2 * r2 6 s3 = 3.14 * r

Python高手之路【五】python基础之正则表达式

下图列出了Python支持的正则表达式元字符和语法: 字符点:匹配任意一个字符 import re st = 'python' result = re.findall('p.t',st) print(result) 字符^:匹配以什么开头 import re st = 'python' result = re.findall('^py',st) print(result) 字符$:匹配以什么结尾 import re st = 'python' result = re.findall('n$',s

我的Python成长之路---第四天---Python基础(16)---2016年1月24日(寒风刺骨)

四.正则表达式 字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用. 正则表达式是一种用来匹配字符串的强有力的武器.它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它"匹配"了,否则,该字符串就是不合法的. 下面这张图展示了使用正则表达式匹配的流程 1.Python支持的正则表达式元

python学习之路-第五天-python的数据结构

数据结构 1. 列表 例子: #!/usr/bin/python # Filename: using_list.py # This is my shopping list shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I have', len(shoplist),'items to purchase.' print 'These items are:', # Notice the comma at end of the line