一、文本文件
文本文件存储的是常规字符串(指的是记事本或其他文本编辑器能正常显示、编辑并且人类能够直接阅读和理解的字符串),由若干文本行组成,通常每行以换行符'\n'结尾。
文本文件的写入
1、打开文件
通过内置函数open()可以创建或打开文件对象,可以指定覆盖模式(文件存在时)、编码和缓存大小。
2、写入数据
打开文件后,可以使用其实例方法write()/writelines(),写入字符串到文本文件。
f.write(s) #把字符串s写入到文件f
f.writelines(lines) #依次把列表lines中的各字符串写入到文件f
f.flush() #把缓冲的数据更新到文件中
3、关闭文件
写入文件完成后,应该使用close方法关闭流,以释放资源,并把缓冲的数据更新到文件中。
f.close() #关闭文件
二、二进制文件
二进制文件把对象内容以字节串(bytes)进行存储,无法用记事本或其他普通字处理软件直接进行编辑,通常也无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改或执行。
二进制文件的写入
1、打开二进制文件
通过内置函数open(),指定打开模式'b',可以创建或打开二进制文件对象。可以指定覆盖模式(文件存在时)和缓存大小。
2、写入数据
打开文件后,可以使用其实例方法write,写入字节数据(bytes或bytearray)到二进制文件。
3、关闭二进制文件
使用close方法关闭流,以释放资源。通常采用with语句,以保证系统自动关闭打开的流。
三、csv文件
CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。
csv文件的写入可根据下面的例子和注释理解一下。
四、举例
将以下信息作为表头:
学号,姓名,性别,班级,书名,作者,出版社
分别用文本文件和csv文件的形式。将文件中写入三行信息,并读取文件,打印信息!
写入文本文件
# 打开文件,以写入模式写入信息
with open('info.txt', 'w') as file:
file.write('学号\t姓名\t性别\t班级\t书名\t作者\t出版社\n') # 写入表头
file.write('123\t小明\t男\t1班\t《Python入门》\t张三\t清华大学出版社\n') # 写入第一行信息
file.write('456\t小红\t女\t2班\t《数据结构与算法》\t李四\t人民邮电出版社\n') # 写入第二行信息
file.write('789\t小李\t男\t3班\t《编译原理》\t王五\t机械工业出版社\n') # 写入第三行信息
读取文本文件
# 打开文件,以读取模式读取信息
with open('info.txt', 'r') as file:
# 读取表头
header = file.readline().strip().split('\t')
# 逐行读取并打印信息
for line in file:
info = line.strip().split('\t')
for i in range(len(header)):
print(header[i], ':', info[i])
print() # 每个信息之间加一个空行
运行截图
写入csv文件
import csv
# 打开文件,以写入模式写入信息
with open('info.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['学号', '姓名', '性别', '班级', '书名', '作者', '出版社']) # 写入表头
writer.writerow(['123', '小明', '男', '1班', '《Python入门》', '张三', '清华大学出版社']) # 写入第一行信息
writer.writerow(['456', '小红', '女', '2班', '《数据结构与算法》', '李四', '人民邮电出版社']) # 写入第二行信息
writer.writerow(['789', '小李', '男', '3班', '《编译原理》', '王五', '机械工业出版社']) # 写入第三行信息
读取csv文件
import csv
# 打开文件,以读取模式读取信息
with open('info.csv', 'r') as file:
reader = csv.reader(file)
header = next(reader) # 读取表头
for line in reader:
for i in range(len(header)):
print(header[i], ':', line[i])
print() # 每个信息之间加一个空行
运行截图