open 函数语法如下:
open(file, mode='r', encoding='None', errors='None')
参数 file 表示要打开文件的路径。
参数 encoding 表示文件的编码方式,文件编码方式一般为 ‘utf-8’。
参数 errors 表示读写文件时碰到错误的报错级别。
参数 mode 决定了打开文件的模式。
r:以只读模式打开文件。
w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。
a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加。
参数 mode 可以不写,不写时mode默认值为r,即只读模式。
在D盘里新建一个文件夹命名为安迪
。
在安迪
文件夹里新建1个名为70
的文件夹,在70
文件夹里新建一个70.ipynb
文件。
用vscode编辑器打开的名为安迪
的文件夹。
在名为70
的ipynb文件中编写下面的代码。
【备注】
编辑器打开的文件夹不同,则相对路径不同。
w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。
# w只写模式
f = open ("花名册.doc", "w", encoding="utf-8")
# 写入的内容
f.write("王小溪")
# 关闭文件
f.close()
"花名册.doc"
是函数open的file参数,表示文件的相对路径。
运行上述代码,我们在70
文件夹中新建了一个名为花名册.doc
的文件。
并向花名册.doc
文件写入了王小溪
。
重点关注最后一行代码,使用open函数打开文件,必须使用close来关闭文件。
# 关闭文件
f.close()
我们用绝对路径新建一个绝对花名册.doc
文件,代码如下所示:
# w只写模式
f = open (r"D:\安迪\70\绝对花名册.doc", "w", encoding="utf-8")
# 写入的内容
f.write("王小溪")
# 关闭文件
f.close()
注意,绝对路径参数前面加上一个字母r/R,这时候就不需要使用反斜杆进行路径转义了。
上面的代码中我们都使用了close方法来关闭文件。
为了使代码更简洁,我们可以使用 with open 语句对 open 语句进行优化。
【体验代码】
【open语句】
f = open ("花名册1.doc", "w", encoding="utf-8")
f.write("王小溪")
f.close( )
【with open 语句】
with open ("花名册2.doc", "w", encoding="utf-8") as f :
f.write("王小溪")
上述2段代码实现的功能都是新建一个doc文件,并向文件写入王小溪
。
【区别是】
open 语句需要使用close关闭文件。
with open 语句不需要使用close关闭文件。
with open() as ...
是对原有 open( ) 和 close( ) 的优化。
使用with open() as ...
语句时,代码块运行完毕后,程序会自动关闭文件,不用再写 close( )语句来关闭文件。
用法是把open()
函数放在 with 后面,把变量名放在as
后面,结束时要加冒号 :
,然后把要执行的代码缩进到with open() as ...
下方的代码块中。
with open ("花名册2.doc", "w", encoding="utf-8") as f :
f.write("王小溪")
固定搭配 with open
语句参数;with open语句的参数和open函数的参数一样;
参数后接固定搭配 as
;
as
后紧跟接收文件对象的变量名f;(open 和with open返回的都是文件对象)
英文冒号:
四个空格的缩进;
缩进后紧跟代码块。
【目标任务】
用绝对路径和相对路径2种方法新建工资表
文件;
工资表文件分别存放于桌面上和我们刚才新建的70文件夹中;
工资表文件中写入3个姓名及对应的工资。
【思路分析】
步骤1. 首先确定file参数:
绝对路径参数:
filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
相对路径参数:
filename = "工资表.doc"
步骤2: 确定mode参数:
我们的额需求是写入且不覆盖原有内容,因此,这里我们可以直接用a
追加模式。
初学者编写代码时可首先写好下面的框架:
with open (filename, "a", encoding='utf-8') as f:
然后添加路径参数:
filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
最后添加要写入的内容:
filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
f.write("张三,9000元\n李四,8000元\n王五,6000元")
绝对路径参数前面加上一个字母r/R,这时候就不需要使用反斜杆进行路径转义了。
上方代码中的最后一行代码中的\n
是转义字符,作用是换行。
filename = "工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
f.write("张三,9000元\n李四,8000元\n王五,6000元")
运行上述代码,大家就可以查看对应的文件夹里已新建了一个工资表.doc
文件,并成功写入了对应的内容。
【温馨提示】
"a"
注意with open 语句也有4个空格的缩进。
初学者路径参数最好用变量存储,这样在比较复杂的程序中,如果有错误,方便修改。
filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
【绝对路径】
filename = r"C:\Users\xiaoyuzhou\Desktop\工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
f.write("张三,9000元\n李四,8000元\n王五,6000元")
【相对路径】
filename = "工资表.doc"
with open (filename, "a" ,encoding='utf-8') as f:
f.write("张三,9000元\n李四,8000元\n王五,6000元")
绝对路径参数前面加上一个字母r/R,这时候就不需要使用反斜杆进行路径转义了。
with open语句不需要使用close关闭文件。
注意with open 语句也有4个空格的缩进。
w:以只写模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则覆盖文件的内容。
a:以追加模式打开文件,不能读内容。如果文件不存在,则创建文件;如果文件存在,则在文件末尾追加。
r:以只读模式打开文件。
如果初学者在文件读写式遇到报错,首先考虑是file路径参数的错误。建议大家回看相对路径
的相关知识,相对路径是非常重要的一个知识点,这个知识点必须理解清楚。不懂的小伙伴可私我。