控制文件指针移动,函数使用,模块

控制文件指针移动

.seek移动的全都是字节个数
f.seek(字节个数,0) 0模式,指针始终在开头
f.seek(字节个数,1) 1模式,指针在当前位子
f.seek(字节个数,2) 2模式,指针在末尾
# 只有0模式可以t下使用,b模式下三种模式都可以用,无论哪种模式,移动的都是字节个数。

print(f.tell()) 打印出 指针当前位子

文件修改的两种方式

# 文件修改的原理:
# 把硬盘数据读入内存,在内存修改完毕后,在覆盖回硬盘。

# 有两种方案
# 方案一:  缺点:原文件过大,费内存。
with open(‘test.txt‘,‘rt‘,encoding=‘utf8‘) as f:
    date=f.read()
    
with open(‘test.txt‘,‘wt‘,encoding=‘utf8‘) as f:
    f.write(date.replace(‘egon‘,‘EGON‘))

个人总结:把原文本的内容读出来,用‘wt‘模式把修改后的文本内容写入原本文。
# 方案二:
import os

with open(‘test.txt‘,‘rt‘,encoding=‘urf8‘) as f1,
open(‘a.txt‘,‘wt‘,encoding=‘urf8‘) as f2:
    for i in f1:
        f.write(i.replace(‘egon‘,‘EGON‘)

os.remove(‘test.txt‘)
os.raname(‘a.txt‘,‘test.txt‘)

用自己的话总结:把原文本内容赋值给i,用‘wt‘模式创建新文本,
把i中的内容用.replace替换然后写入新文本中,os.remove(test.txt) 删除原文本
os.rename(‘a.txt‘,‘test.txt‘) 把新文本名替换成原文本名

函数

‘‘‘
1、什么是函数
	函数就是盛放功能(一系列代码)的容器
	定义函数就是造出了一个工具
	
	函数的定义:事先准备工具的过程
	函数的调用:遇到应用场景拿来就用
	
2、为何要用函数
	不用函数写出的代码问题是:
		1、程序的组织结构不清晰,可读性差,可维护性差
		2、可扩展性差
		
3、如何用函数
	原则:
		先定义
		后调用
	
	定义函数的语法:
	def 函数名(参数1,参数2,...):
		代码1
		代码2
		...
		return 值
		# 可以没有参数和返回值
	
	
	调用函数语法:
	res = 函数名(值1,值2,值3)
# def add(x,y):
#     res = x + y
#     print(res)
#
# add(1,2)
	‘‘‘
# 定义函数与调用函数
# 函数定义阶段发生的事情:申请内存空间,把函数体代码放进去,然后把内存地址绑定给函数名。
# 函数调用阶段发生的事情:执行函数体代码
# ps:函数定义阶段值检测语法不执行代码,只有在调用函数时才会执行函数体代码。

函数的返回值

# return返回值的语法:函数体内可以有多个return,但只要执行一次,整个函数就立即结束,并且将return后的值当做本次调用的产品返回
具体来说函数的的返回值有三种形式:
1、return 值:返回的就是该值本身
2、return 值1,值2,值3:返回的是小元组
3、没有return或者return无值或者return None:返回的都是None

模块的使用

‘‘‘
1、什么是模块
	模块是一些列功能的集合体
	
	模块分为四种通用的类别
		1、使用python编写的.py文件
		2、已被编译为共享库或DLL的C或C++扩展
		3、把一系列模块组织到一起的文件夹
		4、使用C编写并连接到python解释器的内置模块
		
	模块有三种来源:
		1、python自带的模块/库
			内置模块
			标准库
		
		2、第三方的库
		
		3、自定义库
		
2、为何要用模块
	1、拿来主义,提升开发效率
	2、减少代码冗余
	
3、如何用模块
	import
	from...import
‘‘‘

控制文件指针移动,函数使用,模块

上一篇:Linux访问windows共享文件夹


下一篇:pygame Sprite 精灵类移动出现模糊,留下移动痕迹问题解决方法