学习python的第八天

本文介绍了Python中文件操作的seek()和tell()方法,用于控制文件指针位置。详细讲解了如何读写CSV文件,包括列名的写入、单行和多行数据的写入,以及CSV文件的读取。并给出了一个实际例子,演示了如何计算CSV文件中数据的平均值并写回文件。
摘要由CSDN通过智能技术生成

seek()和tell()

seek(参数1,参数2):能够将指针移动指定的偏移量

读取数据:

f1 = open('./界面.txt','r',encoding='utf-8')
print(f1.read())
  1. 参数1:移动的偏移量,默认为0.
  2. 参数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文件的写操作

  1. 返回一个文件对象。
    import csv
    f1 = open('./店铺信息.csv','w',encoding='utf-8',newline='')
    print(f1)
    
  2. 创建写方法对象。
    mywrite = csv.writer(f1)
    
  3. 写入列名。
  • 单行写入:writerow()
    col = ['店铺名','人均','口味','环境','服务']
    mywrite.writerow(col)
    
  1. 写入对应信息。
  • 多行写入: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文件的读操作

  1. 读取数据:
f2 = open('./店铺信息.csv','r',encoding='utf-8')
  1. 创建读方法:
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...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值