Python-day8-seek和tell+csv文件读写操作

本文介绍了Python中的文件操作,包括使用`seek()`和`tell()`函数控制文件指针,以及不同系统的换行符。此外,还详细讲解了如何使用csv模块进行CSV文件的读写,包括写入列名和数据,以及读取和打印CSV文件内容。

文件函数和csv文件读写操作

一、文件函数

(一)seek(参数1, 参数2)

能够将指针移动指定的偏移量。

1.参数1:移动的偏移量,默认为0。

一个英文符号对应一个偏移量;
一个汉字和一个中文符号对应三个偏移量;
Python中有序序列(容器)下标从0开始;
Python操作文件时的偏移量从1开始。

代码:

f1 = open('./test/界面.txt', 'r', encoding='utf-8')
print(f1.read())
f1.seek(21, 0)   # 跳过六个符号:将指针移动到文件开头,再增加六个偏移量

# f1.seek(26, 0)
print(f1.read())
f1.close()

结果:

欢迎进入系统!


** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **



** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **


2.参数2: 0, 1, 2

0: 将指针移动到文件开头;

1: 指针指向当前位置;

2: 讲指针移动到文件尾部。

代码:

f1 = open('./test/界面.txt', 'r', encoding='utf-8')
# f1.seek(0,2)
# 将指针再移动到文件开头
print(f1.read())
# f1.seek(0,2)   #指针移动到文件尾部
# f1.seek(0,0)   # 将指针再移动到文件开头
f1.close()

输出结果:

欢迎进入系统!


** 请选择对应功能: **
** 1. 登录 **
** 2. 注册 **
** 3. 退出系统 **


(二)tell()

查看当前指针的位置。

代码:

f1 = open('./test/界面.txt', 'r', encoding='utf-8')
# tell():查看当前指针的位置
print(f1.tell())
f1.close()

结果:

202

(三)换行

由于系统不一样,最后一个字后面的符号不一样。

linux: \n;

windows: \r\n;

mac: \r

二、csv文件的读写操作

csv文件本质是文本文件,只是以表格的形式展示数据

使用csv内置模块进行csv文件的读写操作。

(一)模块导入

代码:

import csv

(二)csv文件写操作

1.返回一个文件对象

代码:

# windows或者linux操作系统,写csv文件必须加newline=''
# newline = ''   将换行转为空
f1 = open('./店铺信息.csv', 'w', encoding='utf-8', newline='')
print(f1)

输出:

<_io.TextIOWrapper name=‘./店铺信息.csv’ mode=‘w’ encoding=‘utf-8’>

2.创建写方法对象

借助python已经实现的写csv的模块实现的功能。

代码:

# 2.创建写方法对象   借助python已经实现的写csv的模块实现的功能。
myWrite = csv.writer(f1)
3.写入列名

代码:

# 3.写入列名
# 单行写入: writerow()
# 借助列表写入
col = ['店铺名', '人均', '口味', '环境', '服务']
myWrite.writerow(col)
4.写入对应信息

代码:

# 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)
5.关闭文件
f1.close()   # 这一步不能省略
6.最后结果

代码:

# 1.返回一个文件对象
# windows或者linux操作系统,写csv文件必须加newline=''
# newline = ''   将换行转为空
f1 = open('./店铺信息.csv', 'w', encoding='utf-8', newline='')
print(f1)
# 2.创建写方法对象   借助python已经实现的写csv的模块实现的功能。
myWrite = csv.writer(f1)
# 3.写入列名
# 单行写入: writerow()
# 借助列表写入
col = ['店铺名', '人均', '口味', '环境', '服务']
myWrite.writerow(col)
# 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文件,写入的内容为:

店铺名,人均,口味,环境,服务
吼堂火锅,126,4.5,4.7,4.6
小龙坎,100,4.8,4.8,4.7
巴蜀大宅门,70,4.8,4.6,4.8

(三)csv文件读操作

1.创建写方法

代码:

# csv文件读操作
f2 = open('./店铺信息.csv', 'r', encoding='utf-8')
# 创建读方法
myReader = csv.reader(f2)
2.遍历并打印

代码:

for i in myReader:
    for j in i:
        print('{:<8}'.format(j), end='\t')
    print()
3.关闭文件
f2.close()
4.总的代码和结果
# 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='\t')
    print()

f2.close()

结果打印:

店铺名 人均 口味 环境 服务
吼堂火锅 126 4.5 4.7 4.6
小龙坎 100 4.8 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、付费专栏及课程。

余额充值