Day 08
一、seek和tell
1.seek:能够将指针移动指定的偏移量。
- seek语法:seek(参数1,参数2)
- a. 参数1:移动的偏移量,默认为0。
- python中有序序列(容器)下标从0开始。
- python操作文件时的偏移量从1开始。
- 一个英文符号对应一个偏移量,一个汉字和一个中文符号对应三个偏移量。
- b.参数2:可以为写为0,1,2
- 写为0:能够i将指针移动到文件的开头、(默认为1)
- 写为1:指针指向当前阅读的位置、
- 写为2:指针移动到尾部。
- 例:l例子中将为大家解释各种用法,其中涉及的 ‘界面.txt’ 文件是事先准备好的文件。
f1 = open('界面.txt', 'r', encoding='utf-8')
print(f1.read())
# 此处我如果想在打印一边界面,则打印不出来,因为我们已经完整阅读文件,指针已到达末尾,但我们可以使用‘seek'方法,使指针回到文件的开头,在进行打印。
seek(0,0)
print(f1.read())
# 结果为界面文件被打印两次
打印结果为:
第一遍
欢迎登录系统!
**************************
** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **
**************************
第二遍
欢迎登录系统!
**************************
** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **
**************************
如果我想跳过文件中 ‘欢迎登录系统!’ 这句话则可以利用参数一:
f1 = open('界面.txt', 'r', encoding='utf-8')
print(f1.read())
seek(21,0)
# 还记得吗!一个英文符号对应一个偏移量,一个汉字和一个中文符号对应三个偏移量。
print(f1.read())
打印结果为:
**************************
** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **
**************************
2.tell:查看当前指针位置。
- tell可查看当前指针所在的位置,例如我刚跳过完界面文件中 ‘欢迎登录系统!’ 这句话,在进行的打印,我可以查看当前指针所在位置。
f1 = open('界面.txt', 'r', encoding='utf-8')
print(f1.read())
seek(21,0)
print(f1.tell())
print(f1.read())
打印结果为:
21
**************************
** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **
**************************
二、csv文件的读写
1.csv文件
-
csv文件本质是文本文件,只是以表格的形式展示数据。
-
打开csv文件,需要调用csv内置模块,需要调用csv内置模块对csv文件进行读写操作。
2.csv文件的书写
a.返回一个文件对象
- windows 或者 linux操作系统,写csv文件需要加newline = ‘’
- newline = ‘’ --> 将换行转为空
f1 = open('./店铺信息。csv', 'w', encoding='utf-8', newline='')
print(f1)
b.创建写方法对象 一次书写一个单元格
mywiter = csv.writer(f1)
c.写入列名
- 单行写入法–writerow
col = ['店铺名', '人均', '口味', '环境', '服务']
mywiter.writerow(col)
d.写入对应信息
- 多行写入
datas = [['吼堂老火锅', 123, 4.5, 4.7, 4.6],
['小龙坎', 100, 48, 4.8, 4.7],
['巴蜀大宅门', 70, 4.8, 4.6, 4.8]]
mywiter.writerows(datas)
f1.close()
最后文件效果为:
店铺名,人均,口味,环境,服务
吼堂老火锅,123,4.5,4.7,4.6
小龙坎,100,48,4.8,4.7
巴蜀大宅门,70,4.8,4.6,4.8
以wps打开则会呈现表格样式。
3.文件的读操作csv.reader:调用csv模块的读功能。
a.打开文件
f2 = open('./店铺信息。csv', 'r', encoding='utf-8')
b.创建读操作,读出来的文件每列为一个列标,其每行每列对应里面的元素。
myreader = csv.reader(f2)
c.可对文件作遍历操作,达到一定的视觉效果。
# 外层循坏为列数
for i in myreader:
# 内层循坏为每列的元素
for j in i:
# 调整没列元素直接的间隔
print('{:<6}'.format(j), end='\t')
# 每一列元素遍历后换行到列
print()
f1.close()
打印结果为:
店铺名 人均 口味 环境 服务
吼堂老火锅 123 4.5 4.7 4.6
小龙坎 100 48 4.8 4.7
巴蜀大宅门 70 4.8 4.6 4.8