Python其实很简单 第十五章 文件操作 在各种变量中保存的数据都是临时的,随着程序运行结束都会丢失 。要做到数据长期有效,必须建立在磁盘中建立文件,将数据输入到文件中并保存 。需要获取数据时需要打开文件读取 。
而我们自己建立的程序都是应用程序,从本质上讲 , 应用程序是无法直接操作计算机的硬件的,譬如读写磁盘中文件,这就需要调用操作系统中的相应命令 。接下来我们使用的Python内置函数open()、write()都是通过调用操作系统的相关命令才实现文件读写的,至于其中的细节,我们就不需要考虑了 。
15.1创建和打开文件
在Python 中创建或打开文件,实际上是建立一个对象,该对象通过调用内置的open()函数创建或打开一个文件 。
语法:
file object = open(filename [, mode][, buffering])
参数说明如下:
filename:file_name变量是一个包含了你要访问的文件名称的字符串值;
mode:mode决定了打开文件的模式:只读,写入,追加等 。所有可取值见如下的完全列表 。这个参数是非强制的,默认文件访问模式为只读(r) 。
Buffering:如果buffering的值被设为0,就不会有寄存;如果buffering的值取1 , 访问文件时会寄存行;如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大?。蝗绻「褐担拇媲幕撼宕笮≡蛭低衬?。
mode参数的参数值及说明
对于其中最难区别的r、r+、w、w+、a、a+几个参数的区别总结如下 , 要特别注意指针的位置:
下面举例说明open( )函数的使用方法 。
例1:
file=open('1.py')
如果文件“1.py”存在,则可以打开此文件;如果文件“1.py”不存在,则会出现如下提示:
Traceback (most recent call last):
File " ", line 1, in
file=open('1.py')
FileNotFoundError: [Errno 2] No such file or directory: '1.py'
例2:
file=open('4.py',’a+’)
虽然文件“4.py”不存在,但运行并未出现错误 , 参见上表,“a+”的含义是以读写模式打开文件,如果该文件已经存在,新内容将以追加方式写入;如果该文件不存在 , 则新建文件用于写入 。查看文件夹,发现已经生成了一个新的文件4.py 。
例3:
file=open('python.png','rb')
print(file)
运行结果:
这就是说,虽然Python可以打开一个图片格式的文件 , 但print()并不能将其输出,还需要第三方库中模块的相应方法去处理,如PIL中的open()f方法 。
例4:
file = open("f.txt", "w",encoding='utf-8')
# 以只写模式打开文件f.txt , 编码方式为utf-8
print( "文件名: ", file.name) # 输出文件名
print( "是否已关闭 : ", file.closed) # 文件是否打开
print( "访问模式 : ", file.mode) # 文件访问模式
运行结果:
文件名: f.txt
是否已关闭 : False
访问模式 : w
例5:
15.2关闭文件
打开文件使用后要及时关闭,以免造成不必要的破坏,同时也可以释放内存 。在Python中使用close()方法可以关闭文件 。
语法格式:
file.close()
其中,file为文件对象 。
15.3 with语句
with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等 。
with语句的语法格式如下:
with expression as target:
with-body
其中,expression用于指定一个表达式,譬如打开文件的open()函数 。target用于指定一个变量,并且将expression的结果保存到该变量中,譬如文件对象file 。with-body用于指定with语句体,譬如一些文件操作的相关语句,如果没有要执行的语句体,则直接用pass语句代替 。
推荐阅读
- 如何搭建u-net网络,搭建ui
- 电商如何备货入仓,电商如何备货入仓流程
- js连接mysql数据库没反应,前端js连接mysql数据库
- python小测验函数 python测验1
- thinkphp存储过程例子,存储过程 http
- flutter重构有哪些影响,flutter构造函数
- 鸿蒙系统不是今天推送吗,鸿蒙今天推送了吗
- go语言框架设置 go语言gui框架
- 微信视频号哪些好用一点,微信视频号好玩吗