首页 > 其他分享 >文件操作补充+函数伊始

文件操作补充+函数伊始

时间:2023-09-05 16:59:49浏览次数:30  
标签:文件 函数 read len 伊始 print txt def

二进制模式下读写操作

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

with open('a.txt', 'rb') as f:
    # print(f.read().decode('utf-8')) # b'helloworld'
    print(f.read(7).decode('utf-8')) # b'helloworld'
"""
t模式下:
    f.read() 如果不指定参数,默认情况下是一次性读取所有
    f.read(5) 如果指定了参数,返回的就是字符个数
    
b模式下:
    f.read(5) 如果指定了参数,返回的就是字节个数
    如果文件中有中文字符,切记书写的数字要是3的倍数,如果有中文也有英文字符,这个数字需要计算了
"""

控制文件内指针的移动

指针:就可以理解成光标的移动
# with open('a.txt', 'r', encoding='utf-8') as f:
#     print(f.read(5)) # 你helloworld
#     f.seek(3, 1)
#     print(f.read())
#     # print(f.read(5)) 
#     # print(f.read())
""" 汉字算三个字节就是说想要打出汉字得输入三的倍数。"""

with open('a.txt', 'rb') as f:
    print(f.read(2))  # helloworld
    f.seek(-3, 2)
    print(f.read())
    # print(f.read(5))
    # print(f.read())
"""
f.seek()
    offset: int,
        代表的是移动的偏移量
        如果是正数,就往右边移
        如果是负数,就往左边以----------》左边要可移动
    whence: int = 0
        代表的是模式
        # 模式控制:
        
        # 0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的: 它能够使用在t和b模式
        # 1: 该模式代表指针移动的字节数是以当前所在的位置为参照的: 只支持b模式,t模式不行
        # 2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的
"""
  • 小练习
# 小练习:实现动态查看最新一条的效果
# 小练习:实现动态查看最新一条日志的效果
import time  # 导入的一个时间模块

# linux里面的一条命令:tail -f access.log
with open('access.log', mode='rb') as f:
    f.seek(0, 2)
    while True:
        line = f.readline()
        if len(line) == 0:
            # 没有内容
            time.sleep(0.5) # 睡眠0.5秒
        else:
            print(line.decode('utf-8'), end='')

文件的修改

with open('a.txt',mode='r+t',encoding='utf-8') as f:
      f.seek(9)
      f.write('<妇女主任>')
mode='r+'    
mode='w+t'
mode='a+t'
# 可读可写
# 可读可写
# 可读可写

1. 硬盘中得数据是不允许直接修改的
2. 内存中得数据是可以直接修改的
'''方式一:'''
# 1. 读取文件内的所有数据
# 快捷键:shift+enter
with open('a.txt', 'r', encoding='utf-8') as f:
    data = f.read()

print(data)

# 2. 读取完字符之后,做字符替换
with open('a.txt', 'wt', encoding='utf-8') as f:
    f.write(data.replace('kevin', 'kevinSB'))
'''方式2:'''
import os

with open('a.txt',mode='rt',encoding='utf-8') as read_f, \
        open('.a.txt.swap',mode='wt',encoding='utf-8') as wrife_f:
    for line in read_f:
        wrife_f.write(line.replace('SB','kevin'))

os.remove('a.txt')
os.rename('.a.txt.swap','a.txt')

函数简介

# s = 'heelowold'
# print(len(l))  # len不能用了,然后求列表的长度
# 定义一个计数器

def my_len():
    n = 0
    for i in l:
        n += 1
    # print(n)
    return n

print(my_len())
"""
目前的问题:
1. 我们现在所写的代码冗余度比较高,需要写重复代码
2. 目前写的代码兼容性太差了

函数:函数就类似于是一个工具箱,什么时候使用什么时候拿到就用
    内部封装了一些功能,哪里需要就在哪里使用
    
"""

函数的语法结构

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

"""
1. def 就是定义函数的关键字,它不能够省略,必须写
2. my_len():函数名,函数名的命名遵循变量的命名规范,他也是必填的,不能省略的,括号不能省略
3. a, b称为是函数的参数,是可选的,可有可无
    参数就是执行函数的一些前提条件
4. '''函数注释'''
    注释不参与函数的执行,只起到函数功能的提示作用,以及各个参数是什么意思
    # 可有可无的,但是,推荐每个函数都加上函数注释
5.  # 函数体
    才是函数的核心,它是函数所具备的核心功能,应该是必须有的,pass
    没有函数体的函数是没有意义的函数,一般情况都是要有函数体的
6. 返回值  return 函数的返回值
    # 返回值也是可选的,可以有返回值,也可以没有返回值,但是一般情况下都要有返回值
    # 一个函数只能有一个返回值...
"""

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

**************************************************************************************

1. 函数必须先定义后调用,没有定义函数是一定不能够调用的
2. 函数在定义阶段,只检测语法是否错误,不检测逻辑是否有问题
3. 逻辑上的错误只会在调用阶段检测
4. 函数一定是被调用之后才会执行函数内部的代码块,不调用函数一定不会执行函数的
	# 如何调用函数
    函数名() # 只要函数名加括号一定会执行函数体代码
    函数如果在定义阶段有参数,那么,在调用的时候,连参数一块写上
    
**************************************************************************************

函数调用的内部原理:
1. 先在内存空间中申请一块空间地址来存储函数体代码
2. 把函数名和函数体所在的空间地址绑定在一起
3. 以后只需要通过函数名()来访问函数体代码即可

函数的分类

1. 内置函数
	# Python解释器中原本就存在的,可以直接拿来使用,无需定义,直接调用
    len print input 之前学习的数据类型的各个方法
2. 自定义函数
	# 程序员自己写的函数,就必须先定义后调用
    1. 无参函数:函数在定义阶段没有参数
    	def my_len():
            pass
        
        my_len() 
    2. 有参函数:在函数定义阶段有参数的存在
    	def my_len(a, b):
            pass
        
        my_len(1, 2)
3. 空函数
    def my_len():
        pass
        
"""作用就在于可以帮助我们梳理业务逻辑""" 
 	def register():
        pass
    
    def login():
        pass
    
    def address():
        pass
    
    def order():
        pass

标签:文件,函数,read,len,伊始,print,txt,def
From: https://www.cnblogs.com/wolongnp/p/17680109.html

相关文章

  • Python文件的基础操作(2)
    Python文件的基础操作(2)二进制模式下读写操作练习控制文件内指针(光标)的移动文件的修改函数的介绍练习#小练习:编写拷贝工具 1.让用户输入被拷贝的文件路径(源文件路径)2.输入即将要拷贝的文件路径(目标文件路径)3.以读的模式打开源文件,以写的模式打开目标......
  • 回调函数
      ......
  • 人大金仓 错误提示“致命错误:对不起,已经有太多的客户”解决方案 以及linux替换授权文
    项目需要,头一次接触人大金仓(友情提示,可以使用navicat连接哟)。使用连接工具报“对不起,已经有太多的客户”错误,java程序也是如此,找到数据库的kingbase.conf配置文件修改max_connections属性,重启。ok了。。。。。。。。。。。。。。。。。。。个锤子,这是理想情况。不理想情况:重......
  • 视频集中存储/直播点播平台EasyDSS点播文件分类功能新升级
    视频推拉流EasyDSS视频直播点播平台,集视频直播、点播、转码、管理、录像、检索、时移回看等功能于一体,可提供音视频采集、视频推拉流、播放H.265编码视频、存储、分发等视频能力服务。TSINGSEE青犀视频的EasyDSS平台具有点播文件分类展示方法,有两种实现方式可供用户自由选择,今......
  • 无涯教程-JavaScript - DAY函数
    描述DAY函数返回日期的日期,由序列号表示。日期以1到31之间的整数形式给出。语法DAY(serialnumber)争论Argument描述Required/Optionalserialnumber您要查找的日期。应该使用DATE函数或其他公式或函数的输出输入日期。如,在2008年5月的第23天使用DATE(2008,5,23......
  • row_number函数的不稳定性
    本文分享自华为云社区《row_number函数的不稳定性》,作者:nullptr_。row_number为窗口函数,用来为各组内数据生成连续排号基础用法postgres=#selectid,name,age,row_number()over()fromtest;id|name|age|row_number----+------+-----+------------2|张三|......
  • Linux中修改文件权限的命令是什么?
    在Linux系统中,修改文件权限的命令主要有chmod、chgrp、chown。其中chmod是Linux中一个常用的文件权限管理命令,它可以用来更改文件或目录的读写执行权限,接下来我们通过这篇文章详细介绍一下chmod命令。在Linux系统中,修改文件权限的命令是chmod。通过该命令,用户可以更改文件......
  • GO 常用辅助函数
    packagecommimport("crypto/aes""crypto/cipher""crypto/md5""encoding/base64""encoding/binary""errors""fmt""lottery/conf""math/rand"&quo......
  • 前端 文件流下载blob
    1.axios请求携带 responseType:'blob'exportfunctiongetCreateReport(id){returnrequest({url:`${apiPrefix}/bus/proposal/evaluation/${id}`,method:'Get',responseType:'blob'})}2.编写下载方法//blob文件下载expor......
  • 8 函数
    1创建和调用def函数名(输入参数):函数体[returnx]2参数传递形式参数,函数定义处实际参数,函数调用处在函数调用过程中,进行参数的传递如果是不可变对象,在函数体的修改不会影响实参的值如果是可变对象,在函数体的的修改会影响到实参的值3函数的返回值(1)如果函数没有返......