Py07·文件行列值

python·打印文件行列及统计文件总行数

解释:
open
函数有两个基本的参数,分别是文件路径和模式。其中,模式是指对文件的操作方式,比如读取、写入、追加等。常用的文件模式包括:
"r":只读模式,打开一个已存在的文件进行读取操作,如果文件不存在则会报错;
"w":写模式,打开一个文件进行写入操作,如果文件不存在则会被创建,如果文件已经存在,则会将文件内容清空再写入新的内容;
"a":追加模式,打开一个文件进行写入操作,如果文件不存在则会被创建,如果文件已经存在,则会在文件末尾追加新的内容;
"x":独占模式,只允许对一个新文件进行写入操作,如果文件已存在则会报错;
"b":二进制模式,对文件进行二进制读写操作。
在这个代码中,"r"表示以只读模式打开文件,使用该模式读取文件中的内容。

## 使用encoding指定打开文件的格式
with open("data.txt", "r",encoding="utf-8") as file:
    # 读取前5行数据
    print("前5行数据:")
    lines = [file.readline().strip() for i in range(5)]
    print('\n'.join(lines))

    # 读取前5列数据
    print("前5列数据:")
    file.seek(0)
    cols = [[] for i in range(5)]
    for line in file:
        items = line.strip().split(",")
        for i in range(5):
            cols[i].append(items[i])
    for col in cols:
        print(col)

    # 读取后5行数据
    print("后5行数据:")
    lines = []
    for line in file.readlines()[-5:]:
        lines.append(line.strip())
    print('\n'.join(lines))

    # 读取后5列数据
    print("后5列数据:")
    file.seek(0)
    for i in range(5):
        file.readline()
    cols = [[] for i in range(5)]
    for line in file:
        items = line.strip().split(",")
        for i in range(5):
            cols[i].append(items[i])
    for col in cols:
        print(col)

    # 统计文件总行数
    file.seek(0)
    lines = file.readlines()
    print("文件总行数:", len(lines))

指针位置

seek()是 Python 的文件对象 (file object) 的方法,用于移动文件读写指针到指定位置。
在文件读取时,文件读取指针默认位于文件开始处,每次读取操作都会将指针移动到读取完的位置。如果需要在文件中任意位置读取数据,可以使用 
seek()
 方法将读取指针移动到指定位置。
seek()
 方法接受两个参数,一个是偏移量(
offset
),用于指定要移动的相对位置;另一个是起始点(
whence
),用于指定从哪个位置开始移动指针,可选值为 012。
举个例子,假设文件中有以下 10 个字符:
"0123456789"
如果想要读取第 5 个字符后的内容,可以使用 
seek()
 方法将读取指针移到第 5 个字符的位置,然后再进行读取操作:
with open('file.txt', 'r') as f:
    f.seek(4)
    content = f.read()
print(content)  # 从第 5 个字符开始的内容:"456789"

在上面的例子中,我们使用了偏移量 
4
 和起始点 
0
,意思是将指针从文件开始处向后移动 4 个字符。另外,
seek()
 方法也可以将文件指针移动到文件的末尾,例如:
with open('file.txt', 'r') as f:
    f.seek(0, 2)
    end_pos = f.tell()
print(end_pos)  # 文件末尾的位置

在上面的例子中,我们使用了偏移量 
0
 和起始点 
2
,意思是将指针从文件末尾向后移动 0 个字符,也就是将指针移动到文件末尾的位置。注意的是,
seek() 方法对于读取模式和写入模式有不同的效果,需要根据具体的场景选择合适的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青鸟遇鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值