赞
踩
open() 函数的作用是打开一个文件,并返回一个 file对象(即文件对象)。
open 是一个动作,可以理解为我们打开文档的点击动作。
file 对象是一个实物,可以理解为我们打开的具体文档,例如记事本、表格、Word 或其他具体的文档。
open() 函数的语法为:
f = open(file, mode, encoding)
open 函数有3个参数:file, mode, encoding
file:表示要保存或要打开的文件的路径。
mode:表示数据以何种方式打开、写入文本。encoding:指定了文件的编码方式。
当我们手动打开一个文件时,我们首先要知道文件的存储位置。
参数file 就代表文件的存储位置。
参数file 表示要打开文件的路径。
路径可以是绝对路径,也可以是相对路径。
相对路径中.表示当前文件夹,.可以省略不写,…表示上一级文件夹。
file [faɪl]:文件
第2个参数 mode 决定了打开文件的模式。
mode 的模式有6种:
【注意事项】
参数 mode 可以不写,不写时默认值为 ‘r’。
也就是说,当不设置参数 mode 时,打开文件会默认只读模式。
mode [məʊd]:方式、方法
参数 encoding 表示文件的编码方式,文件编码方式一般为 ‘utf-8’。
为了避免程序报错或者读取到的内容出现乱码,需要把 encoding 设置为 ‘utf-8’,即写为 encoding=‘utf-8’。
encoding [ɪnˈkəʊdɪŋ]:编码。
编码的详细知识,以后在做详细介绍。
1、情景提要
我现在编写代码的文件是【9.4 open 函数.ipynb】
它的绝对路径是:
“D:\笔记\第9章 文件读写\9.4 open 函数\9.4 open 函数.ipynb”
我的根目录即我打开的文件夹是:【9.4 open 函数】
2、w 写入模式
任务1:在根目录下新建一个记事本,则第一个file 参数为【‘学生姓名.txt’】
# 设置【学生姓名.txt】文件的路径,存储在变量file中
file = '学生姓名.txt'
# 用 open() 函数以W写入方式新建【学生姓名.txt】
open(file, 'w', encoding='utf-8')
【终端输出】
<_io.TextIOWrapper name='学生姓名.txt' mode='w' encoding='utf-8'>
我想在【9.4 open 函数】文件夹里新建一个【学生成绩.txt】记事本。
因为【学生成绩.txt】记事本和【9.4 open 函数.ipynb】要放在同一文件夹,
因此open 的第一个参数file为:学生姓名.txt。
这里用的是相对路径表示。
open的第二个参数为w
w是写入模式:
1.如果文件存在,则打开文件, 2.如果文件不存在,则新建文件。3.编辑模式是从头开始编辑,文件原有的的内容会被删除。
因为我的文件夹里没有【学生姓名.txt】这个文件,所以当采用w模式时,程序会新建一个【学生姓名.txt】文件。
上述代码运行成功后,终端会打印出 <_io.TextIOWrapper name=‘学生姓名.txt’ mode=‘w’ encoding=‘utf-8’>
同时,大家可以看到【9.4 open 函数】文件夹里多了一个【学生姓名.txt】。
因为 open() 函数会返回一个 file 对象,即文件对象。
终端打印出的内容就是函数以写入模式打开文件后,返回的文件对象。
任务2:
【在根目录的上一级文件夹中新建一个记事本,第一个file 参数为【‘…\学生姓名.txt’】
绝对路径:“D:\笔记\第9章 文件读写\9.4 open 函数\9.4 open 函数.ipynb”
我们在【第9章 文件读写】中新建一个【‘学生姓名.txt’】
# 设置【学生姓名.txt】文件的路径,存储在变量file中
file = '..\\学生姓名.txt'
# 用 open() 函数以W写入方式新建【学生姓名.txt】
# open 函数返回的是文件对象,这里的f就代表文件对象
f = open(file, 'w', encoding='utf-8')
【温馨提示】
第1个file参数很多同学都分不清,很容易出错。
在后面的爬虫章节,初学者都容易放如下两个错误:
1.代码提示找不到XXX文件,这是因为file参数的相对对路径错误,程序找不到位置。
2.代码运行正常,但是同学找不到爬取到的内容存放的位置,这是因为同学不理解file参数即相对路径的意思,因此理解相对路径的含义是必须要掌握的基础知识。
任务3:在txt 文档中写入一个姓名:【张三】
# 设置【学生姓名.txt】文件的路径,存储在变量file中
file = '学生姓名.txt'
# 用 open() 函数以w写入方式新建【学生姓名.txt】
# open 函数返回的是文件对象,这里的f就代表文件对象
f = open(file, 'w', encoding='utf-8')
# 用write 函数写入内容
f.write("张三")
【终端输出】
2
终端输出的2表示我们成功输入了2个字符。
我们的TXT 文档本来是空的,运行上述代码后我们发现文档里写入了2个字【张三】。
w 模式每次都是从头开始编写的,不管文档里之前有没有内容,它都会清空从头开始编写。
我们再写入【“李四、王五”】,看看文档有什么变化。
# 设置【学生姓名.txt】文件的路径,存储在变量file中
file = '学生姓名.txt'
# 用 open() 函数以w写入方式新建【学生姓名.txt】
# open 函数返回的是文件对象,这里的f就代表文件对象
f = open(file, 'w', encoding='utf-8')
# 用write 函数写入内容
f.write("李四、王五")
运行上述代码后,大家在打开记事本,发现【张三】被删除了,只有【李四、王五】。
因为w写入模式就是从头开始写,之前的内容不保留。
工作中,我们通常是需要保存之前的写的内容的,这是时候我们就需要用追加模式,追加的意思就是在以前的基础上继续写。
# 设置【学生姓名.txt】文件的路径,存储在变量file中
file = '学生姓名.txt'
# 用 open() 函数以a追加方式新建【学生姓名.txt】
# open 函数返回的是文件对象,这里的f就代表文件对象
f = open(file, 'a', encoding='utf-8')
# write 函数写入内容
f.write("、赵六")
上述代码的第二参数为a:
a是追加模式:
1.如果文件存在,则打开文件,
2.如果文件不存在,则新建文件。
3.编辑模式是从结尾处开始编辑,文件原有的的内容保存。
w 和 a的区别就是是否保存之前的内容。
运行上述代码后,记事本里就会多了【、赵六】的字符. 【温馨提示】
注意上述代码你运行一次,即你每点击运行一次,就写入一个【、赵六】。
运行下面的代码,观察记事本的变化:
# 设置【学生姓名.txt】文件的路径,存储在变量file中
file = '学生姓名.txt'
# 用 open() 函数以a追加方式新建【学生姓名.txt】
# open 函数返回的是文件对象,这里的f就代表文件对象
f = open(file, 'a', encoding='utf-8')
# write 函数写入内容
f.write("、嘿嘿")
运行上面的代码,大家发现刚才写入的【李四、王五、赵六】等内容还是存在的,并且增加了【嘿嘿】字符。
有时候我们并不需要对文件进行写的操作,我们只需要打开文件即只读模式,此时我们的第二个参数mode 就为r,注意,r也可以不写。
# 设置【学生姓名.txt】文件的路径,存储在变量file中
file = '学生姓名.txt'
# 用只读方式打开文件
f = open(file, 'r', encoding='utf-8')
# 关闭文件
f.close( )
我们人工操作文件时,有打开就有关闭,Python代码也是一样的,open打开文件后,处理完我们也应该用close 关闭文件。
关闭语法为:文件对象.close( ) = f.close( )
文件对象就是我们open 函数的返回值,即上述代码中的变量f。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。