一、基本格式和模式
open: 将导入的文件生成文件对象(file object) 并返回该文件对象。 python自带,不需要import任何library。
- 格式:file = open(filepath,mode) 。mode可以为’r’, ‘w’, ‘a’。
可使用的模式:r(只读),w(创建新文件并修改),a(在已存在的文件上进行修改)
- 实例1:file = open(‘data.xlsx’, ‘r’), 只读模式打开名为data的文件,如该文件不存在则报错。
- 实例2:file = open(‘data.xlsx’, ‘w’),创建一个名为data的新文件,可对该文件的内容进行修改。如果已经存在同名文件,则覆盖该文件。
- 实例3:file = open(‘data.xlsx’, ‘a’),创建一个名为data的新文件,可对该文件的内容进行修改。如果已经存在同名文件,则打开该同名文件进行修改。
二、file对象可使用的方法
- file.name:获取文件名
- file.mode:获取文件的打开模式
- file.close: 关闭文件
- file.closed: 判断文件是否已经关闭,返回True or False
(一)在只读模式’r’下可使用的
- file.read(n):返回文件对象前n个字符(注:换行符也算一个字符)。如果不写n,则返回文件对象中的全部内容。需注意,如之前运行了.read(n)或者.readline(n),则文件开始的位置是上次读取结束的后一位。
- file.readline(n): 返回文件对象里的第一行的前n个字符;如果不写n,则返回文件对象第一行全部内容;如果n大于第一行字符个数,则返回第一行全部内容。需注意,第一次使用readline时,第一行默认为第一个换行符之前的内容,如果连续使用readline,则会依次往后推,详见示例。
- file.readlines(): 获取文件对象里的所有内容,并返回一个存储了文件对象内容的列表,默认每个换行符对应列表里的一个元素。
.read(n) vs .readline(n):与.read()不同,readline()只能读取一行的内容。如果n大于该行字符个数,.read(n)会继续读取下一行,.readline()不会继续读下一行。
(二)在修改模式‘w’和’a’下可使用的
- file.write()
- 但是不能使用.read(), .readline(), .readlines()等只读模式下的方法。
三、实际操作
特别注意!要记得关闭被打开的文件。
一般使用with open as filename: 格式来操作文件。程序会执行with下面的代码块,执行完代码块之后会自动关闭文件,无需写file.close().
(一)读写模式下(w)
lines = ['hello,\n', 'my name is becky.']
#创建一个名为example的新文本文件
with open('data/example.txt', 'w') as file1:
#每次写入一行数据(\n为换行符)
file1.write('This is a new exercise.\n')
#或者利用循环写入多行数据
for line in lines:
file1.write(line)
#【结果】
#在该程序所在文件夹创建了一个新文件example.txt,该文件里的内容是:
#This is a new exercise
#hello,
#my name is becky.
(二)读写模式下(a)
with open('data/example.txt', 'a') as file1:
file1.write('This is a new exercise.\n')
file1.write('This is the last sentence.\n')
#【结果】
#在该程序所在文件夹的文件example.txt里的内容应变为:
#This is a new exercise
#hello,
#my name is becky. This is a new exercise.
#This is the last sentence.
(三)只读模式下(r)
with open('data/example.txt', 'r') as file1