文件基本操作与函数基础

二进制模式下的读写操作 

with open('a.txt','r',encoding='utf-8') as f:    #helloworld
    print(f.read(5))    #hello

t模式下,f.read()如果不指定参数,默认一次性读取所有。

f.read(5)如果指定参数,返回的就是字符的个数 

with open('a.txt','rb')as f:    #helloworld
    print(f.read(5))    #b'hello'

b模式下,f.read()如果指定了参数,返回的就是字节个数

控制文件内指针移动

 0:默认的模式,代表指针移动的字节数以文件开头为参照的,它能够在t模式和b模式

with open('a.txt','r',encoding='utf-8')as f:    #helloworld
    f.seek(5,0)
    print(f.read())    #world
with open('a.txt','rb')as f:#helloworld
    f.seek(5,0)
    print(f.read().decode('utf-8'))#world

1:该模式代表指针移动的字节数是以当前位置为参照物的,只支持b模式,t模式不行

with open('a.txt','rb')as f:    #helloworld
    print(f.read(1))    #b'h'
    f.seek(5,1)
    print(f.read().decode('utf-8'))    #orld

2:该模式代表指针移动的字节数是以文件末尾为参照的

with open('a.txt','rb')as f:#helloworld
    print(f.read(1))    #b'h'
    f.seek(-1,2)
    print(f.read().decode('utf-8')) #d

小练习:实现动态查看最新一条的效果

import time#导入一个时间模块
with open('a.txt','rb')as f:
    f.seek(0,2)
    while True:
        line=f.readline()
        if len(line)==0:
            #没有内容
            time.sleep(0.3)
            #睡眠0.3秒
        else:
            print(line.decode('utf-8'),end='')

文件修改

文件db.txt内容如下

张一蛋     山东    179    49    12344234523
李二蛋     河北    163    57    13913453521
王全蛋     山西    153    62    1865143342

文件修改方式一

将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件

with open('db.txt','rt',encoding='utf-8')as f:    #读取文件
    data=f.read()
with open('db.txt','wt',encoding='utf-8')as f:    #写入文件
    f.write(data.replace('张一蛋 ','sb'))

文件修改方式二

以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名

import os
with open('db.txt','rt',encoding='utf-8')as read_f,\
    open('.db.txt','wt',encoding='utf-8')as write_f:
    for line in read_f:
        write_f.write(line.replace('sb','hb'))
os.remove('db.txt')    #删除原文件
os.rename('.db.txt.swap','db.txt')    #改名字

函数

函数主要来解决代码冗余性问题,函数就是类似于一个工具,内部封装了一些功能,哪里需要就在哪里使用。

函数语法结构

def my_len(a, b):
    '''函数注释'''
    # 函数体
    return '123'

函数的定义与调用(重点)

1.函数必须先定义后使用

2.函数在定义阶段只检测语法是否错误,不检测逻辑是否有问题

3.逻辑错误在调用阶段检测

4.函数调用后才会执行代码块

如何调用函数

函数名()

函数的分类

1.内置函数

len print input等

2.无参函数

def my_len():
            pass
        
        my_len() 

3.有参函数

def my_len(a,b):
            pass
        
        my_len(a,b) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值