seek和tell
seek
seek(参数1, 参数2):能够将指针移动制定的偏移量
- 参数1:移动的偏移量
- 参数2: :0-将指针移动到文件开头、1(默认):将指针向当前位置、2:指针移动到文件尾部
f1 = open('界面.txt', 'r', encoding='utf-8')
print(f1.read())
将指针再移动到文件开头
f1.seek(0, 0)
一个英文符号对应一个偏移量,一个汉字和一个中文符号对应3个偏移量
python中有序序列(容器)下标从0开始:
python操作文件时的偏移量从1开始
f1.seek(6, 0)—>将指针移动到文件开头,再增加6个偏移量
f1.seek(21, 0)
print(f1.read())
tell
tell():查看当前指针的位置
print(f1.tell())
注
换行:
linux:\n;
windows:\r\n;
mac:\r
csv文件的读写
csv文件的本质是文本文件,只是以表格的形式展示数据
import csv
使用csv内置模块进行csv的读写操作
1. 返回一个文件对象
Windows或者linux操作系统,写csv文件必须加上newline=‘’
newline=‘’ —>将换行转为空
f1 = open('./店铺信息.csv', 'w', encoding='utf-8', newline='')
print(f1)
2.创建写方法对象
mywrite = csv.writer(f1)
3.写入列名
单行写入:writerow()
col = ['店铺名', '人均', '口味', '环境', '服务']
mywrite.writerow(col)
print(mywrite)
4.写入对应信息
多行写入:writerows()
datas = [
['吼堂老火锅', 126, 4.5, 4.7, 4.6],
['小龙坎', 100, 4.8, 4.8, 4.7],
['巴蜀大宅门', 70, 4.8, 4.6, 4.8]
]
mywrite.writerows(datas)
f1.close()
csv文件读操作
f2 = open('./店铺信息.csv', 'r', encoding='utf-8')
# 创建读方法
myreader = csv.reader(f2)
for i in myreader:
for j in i:
print('{:<10}'.format(j), end='')
print()
f2.close()
练习:
计算酒店平均评分并且添加到csv文件
import csv
f1 = open('./北京高档酒店价格分析.csv', 'r', encoding='utf-8')
myreader = csv.reader(f1)
data = list(myreader)
f1.close()
# 创建新文件
f2 = open('./北京酒店信息.csv', 'w', encoding='utf-8', newline='')
# 写方法
mywrite = csv.writer(f2)
data1 = [i for i in data[0]]
data1.append('平均评分')
mywrite.writerow(data1)
for i in list(data)[1:]:
average = round((float(i[3]) + float(i[4]) + float(i[5]) + float(i[6]))/4, 2)
result = f'{i[0]}的平均分为:{average}'
i.append(average)
mywrite.writerow(i)
f2.close()