码农学技术————六个月学习python全栈【Day10】

今日学习目标:

  • 熟悉文件操作,理解和运用文件操作方法
  • 理解函数定义

今日学习内容:

内容简要:

  • 文件内光标的移动(了解)
  • 文件数据修改(了解)
  • 函数简介
  • 函数的语法结构

内容详细:

文件内光标的移动(了解)

光标的移动

  • 1.控制光标的移动

    seek方法可以控制光标的移动 在文本模式下移动的单位也是字节数

    语法结构:

    • seek(offset,whence)
      offset:控制移动的字节数
      whence:控制模式
    • whence:控制模式
      0:相对于文件开头(让光标先移动到文件开头)
      *支持文本模式和二进制模式*
      1:相对于当前位置(让光标先停留在当前位置)
      *只支持二进制模式*
      2:相对于文件结尾(让光标先移动到文件末尾)
      *只支持二进制模式*

    举例:

    with open(r'a.txt', 'r', encoding='utf8') as f:
     		print(f.read())
    		f.seek(3, 0)
    		print(f.read())
    

    运行结果:
    在这里插入图片描述


文件数据修改(了解)

文件对应的是硬盘空间,硬盘不能修改对应着文件本质也不能修改,
那我们看到文件的内容可以修改,是如何实现的呢?
大致的思路是将硬盘中文件内容读入内存,然后在内存中修改完毕后再覆盖回硬盘

举例:
文件a.txt改变前内容如下

	张三     男    28    12344234523
	李四     女    23    13913453521

代码:

	with open('a.txt',mode='r+t',encoding='utf-8') as f:
    	f.seek(6)
   	 f.write('<已婚>')

运行结果:

	张三<已婚>    28    12344234523
	李四     女    23    13913453521
  • 1、硬盘空间是无法修改的,硬盘中数据的更新都是用新内容覆盖旧内容
  • 2、内存中的数据是可以修改的

补充思路:

思路一:

# 实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
# 优点: 在文件修改过程中同一份数据只有一份
# 缺点: 会过多地占用内存
with open('db.txt',mode='rt',encoding='utf-8') as f:
    data=f.read()

with open('db.txt',mode='wt',encoding='utf-8') as f:
    f.write(data.replace('kevin','SB'))

思路二:

# 实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名
# 优点: 不会占用过多的内存
# 缺点: 在文件修改过程中同一份数据存了两份
import os

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

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


函数简介

什么是函数 ?

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独立功能的代码块组织为一个小模块,这就是函数

  • 定义函数的格式如下:

    def 函数名(参数1,参数2):
    	'''函数的注释'''
    	函数体代码
    	return 返回值
    
    

函数的语法结构刨析

名称解释
def是定义函数的关键字
函数名函数名类似于是变量名 指代函数体代码 命名与变量名一致
参数类似于使用函数的时候 给函数内部传递的数据 可以不写 或者单个、多个
冒号定义函数也需要有缩进的代码块
函数的注释用于解释函数的主要功能、使用方法等说明性文字
函数体代码函数的核心功能 也是我们将来编写的核心 return

特别提醒

	'''
	定义函数需要使用def关键字
	定义函数的过程不会执行函数体代码 只会检测语法
		def index():
			xsadasd  定义的时候不会报错
		def index1():
			if  语法错误定义的时候就会报错
	调用函数需要使用函数名加括号
'''

举例

	# 定义一个函数,能够完成打印信息的功能
	def printInfo():
    	print('------------------------------------')
    	print('         你好!Python')
    	print('------------------------------------')
  • 调用函数

    定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码 能够执行,需要调用它
    调用函数很简单的,通过 函数名() 即可完成调用

    	# 定义完函数后,函数是不会自动执行的,需要调用它才可以
    	printInfo()
    

    运行结果
    在这里插入图片描述
    注意:

    • 每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了
    • 当然了如果函数中执行到了return也会结束函数

今日学习时间:

这里统计计划学习的时间

1、 上午8:30~12:30
2、 下午2:30~5:30
3、 晚上6:30~9:30


今日学习产出:

这里统计学习计划的总量

  • 1、 技术笔记 1遍
  • 2、CSDN 技术博客 1篇
  • 3、每日录音
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值