python学习day10笔记

2021/6/9 22:23:54

本文主要是介绍python学习day10笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

今日内容

1.控制文件指针移动

'''
f.seek移动的全都是字节个数

f.seek(字节个数, 0)
0代表开头,在t,b下使用

f.seek(字节个数, 1)
1代表当前位置,在b模式下使用

f.seek(字节个数, 2)
2代表末尾,在b模式下使用
快速移动到末尾 f.seek(0, 2)
'''

f.tell()  # 告诉你文件指针位置距离开头多少个字节

# 如何读取中间到末尾的字节
f.seek(x, 0)
f.read()

tail -f 文件路径  # 观察文件新的内容进来

import time
time.strftime("%Y-%m-%d %H:%M:%S")  # 显示当前时间 %年%月%日 %时:%分:%秒

# 记录日志
import time
with open('access.log', mode='at', encoding='utf-8') as f:
    f.write("%s 张三 200.103.110.22 ok \n" % time.strftime("%Y-%m-%d %H:%M:%S"))
    
# 实时记录
with open('access.log', mode = 'rb') as f:
    f.seek(0,2)
    while True:
        line = f.readline()
        if len(line) == 0:
            continue
        else:
            print(line.decode('utf-8'),end = '')

2.文件修改的两种方式

'''
文件修改共同原理
把硬盘数据读入内存,在内存修改完毕后,在覆盖回硬盘
具体分两种方案
'''

# 方案一,将文件内egon改成大写EGON
# 缺点:源文件过大不适合用,对内存有要求,同时费内存
# 优点:对硬盘没有要求
# 文件全部读到内存,修改完了覆盖回文件

with open('test.txt',mode='rt',encoding='utf-8') as f:
    date = f.read()  # 将数据存到内存,变量date中
with open('test.txt',mode='wt',encoding='utf-8') as f:
    f.write(date.replace('egon','EGON'))
    
# 方案二,将文件内EGON改成小写egon
# 缺点:对硬盘有要求,生成临时文件之前硬盘要预留足够的空间
# 优点:对内存没有要求
# 新建一个文件,从旧文件一行一行修改写到新文件

import os
with open('test.txt',mode='rt',encoding='utf-8') as f1,\
open('.test.txt.swp',mode='wt',encoding='utf-8')as f2:
    for line in f1:
        f2.write(line.replace('EGON','egon'))
os.remove('test.txt')
os.rename('.test.txt.swp','test.txt')

3.函数

'''
1.什么是函数
	函数就是盛放功能(一系列代码)的容器
	定义函数就是造出了一个工具
	
	实现准备工具的过程->函数的定义
	遇到应用场景拿来就用->函数的调用
2.为何要用函数
	不用函数写出的代码问题是:
		1.程序的组织结构不清晰,可读性差,可维护性差
		2.程序的可扩展性差
3.如何用函数
	原则:
		先定义
		后调用
'''

# 定义函数
定义函数的语法:
	def 函数名(参数1,参数2,参数3,...):  # 函数名 = 函数的内存地址
		# 写文档注释信息
    	代码1
    	代码2
    	代码3
    	最后可以加 return 返回值
    	# 函数名通常是动词,命名规则与变量名一样
# 就是把写好的代码,上面加上def,然后代码整体缩进tab
'''
函数定义阶段发生的事:
申请内存空间,把函数体代码放进去,然后把内存地址绑定给函数名。
函数定义阶段只检测语法不执行代码,只有在调用函数时才会执行函数体代码
'''

# 调用函数
调用函数语法:
    函数名(值1,值2,值3)
'''
函数调用阶段发生的事:
执行函数体代码
'''

# 函数的参数:形参与实参
s1 = 'hello world'
调用函数时传递的这个“hello world”被称为实际参数
因为这个是实际的要交给函数的内容,简称实参

定义函数时的s1,只是一个变量的名字,被称为形式参数
因为在定义函数的时候它只是一个形式,表示这里有一个参数,简称形参

# 函数的返回值

def max2(sal1,sal2):
    if sal1>sal2:
        return sal1  # 返回sal1值到max2
    else:
        return sal2  # 返回sal2值到max2
res = max2(1000,2000)  # res等于max2(值,值)的返回值

'''
函数内可以有多个返回值return
但只要执行一次,整个函数就立即结束
并且将return后的值当作本次调用的产品返回

具体来说函数的返回值有三种形式
1.return 值:返回的就是改值本身
2.return 值1,值2,值3:返回的是小元组
3.没有return\return后无值\return None:默认返回None
'''

4.模块

'''
1.什么是模块
	模块是一系列功能的集合体
	
	模块分为四种通用的类别
		1.使用python编写的.py文件  # 只需要了解这个
		2.已被编译为共享库或DLL的C或C++扩展
		3.把一系列模块组织到一起的文件夹(注:文件夹下有一个_init_.py,该文件夹称之为包)
		4.使用C编写并链接到python解释器的内置模块
		
	模块有三种来源:
		1.python自带的模块/库
			内置模块
			标准库
		2.第三方的库
			开源
		3.自定义库
			自己写
			
2.为何要用模块
	拿来主义,提升开发效率
	减少代码冗余
	
3.如何用模块
	import
	from...import...
'''
1.import
import 文件名  # 导入文件模块
文件名.需要用的代码

2.from...import...
from 文件名 import 需要的代码

5.常用模块

1.time模块
import time

# 时间戳
print(time.time())  # 距离1970年1月1日有多少秒

# 格式化的字符
print(time.strftime('%Y-%m-%d %H:%M:%S'))
年-月-日 时:分:秒

# 结构化的时间
time.localtime()
a = time.localtime()
print(a.tm_year)  # 输出年

time.gmtime()  # utc时间

2.random模块
import random

random.random()  # 随机取0-1之间的小数 float

random.randint(1, 3)  # 随机取[0]-[1]之间的数 int

random.randrange(1, 3)  # 随机取[0]-[1]之间的数,顾头不顾尾

random.choice([11,'aa',333])  # 随机列表内取一个值

random.sample([11,'aa',333],2),  # 随机列表内取[1]个值

random.uniform(1, 3)  # 随机取[0]-[1]之间的小数

item=[1, 3, 5, 7, 9]
random.shuffle(item)  # 打乱item顺序

# 储备知识
chr(65)  # 得到对应字符编码表中65位的A
chr(90)  # 得到对应字符编码表中90位的Z

ord('A')
ord('Z')  # 与上相反


这篇关于python学习day10笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程