学习使我快乐 第八天

这篇博客介绍了Python中文件操作的seek和tell方法,包括指针的移动和当前位置查看,并通过实例展示了如何跳过文件部分内容。此外,还详细讲解了CSV文件的读写操作,包括如何创建和读取CSV文件,以及使用csv模块进行数据写入和读取的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值