seek()和tell()
seek(参数1,参数2):能够将指针移动指定的偏移量
读取数据:
f1 = open('./界面.txt','r',encoding='utf-8')
print(f1.read())
- 参数1:移动的偏移量,默认为0.
- 参数2:0 – 将指针移动到文件开头,1(默认)-- 指针指向当前位置,2 – 指针移动到文件尾部。
- 将指针再移动到文件开头
f1.seek(0,0)
一个英文符号对应一个偏移量,一个汉字和一个中文符号对应三个偏移量。
python中有序序列(容器)下标从0开始
,python操作文件时的偏移量从1开始
。 - 将指针移动到文件开头,再增加6个偏移量
f1.seek(6,0) print(f1.read())
tell():查看当前指针的位置。
换行:Linux系统:\n、Windows:\n\r、mac:\r,\r没有长度
print(f1.tell())
# 309
csv文件的读写操作
csv文件的本质:文本文件,只是以表格的形式展示数据。
使用csv内置模块进行csv文件的读写操作。
open()的参数4:将换行转为空。
csv文件的写操作
- 返回一个文件对象。
import csv f1 = open('./店铺信息.csv','w',encoding='utf-8',newline='') print(f1)
- 创建写方法对象。
mywrite = csv.writer(f1)
- 写入列名。
- 单行写入:writerow()
col = ['店铺名','人均','口味','环境','服务'] mywrite.writerow(col)
- 写入对应信息。
- 多行写入: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('{:<8}'.format(j),end='')
print()
# 店铺名 人均 口味 环境 服务
# 吼堂老火锅 126 4.5 4.7 4.6
# 小龙坎 100 4.8 4.8 4.7
# 巴蜀大宅门火锅 70 4.8 4.6 4.8
练习:求出文件北京高档酒店价格分析.csv中的四个评分的平均值,并写入北京高档酒店价格分析.csv中。
import csv
# 读数据
f1 = open('./北京高档酒店价格分析.csv', 'r', encoding='utf-8')
# 创建读文件的方法
read_data = csv.reader(f1)
data = list(read_data)
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 info in data[1:]:
# print(info)
score = round((float(info[3]) + float(info[4]) + float(info[5]) + float(info[6])) / 4, 2)
result = f'{info[0]}的平均分为:{score}'
print(result)
# 将平均分重新写入文件
info.append(score)
mywrite.writerow(info)
f2.close()
# 北京朗丽兹西山花园酒店的平均分为:4.68
# 北京钓鱼台国宾馆的平均分为:4.78
# 北京颐和安缦酒店的平均分为:4.53
# 北京华尔道夫胡同四合院的平均分为:4.75
# 北京颐和安缦酒店的平均分为:4.53...