python知识心得10
2021/6/9 22:21:59
本文主要是介绍python知识心得10,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今日内容:
1、控制文件指针移动
# f.seek移动的全都是字节个数 # f.seek(字节个数,0) # 文件最开始的地方 # f.seek(字节个数,1) # 指针移动到的地方 # f.seek(字节个数,2) # 文件末尾 # ps:只有0模式可以t下使用,其中1和2模式只能在b模式下使用,但是无论在t模式还是b模式下,移动的都是字节个数 # 例如:a.txt 内容:hello你好kasjdkla with open(r"a.txt",mode="rt",encoding="utf-8") as f: print(f.tell()) # 0 查看当前文件指针距离文件开头的位置,输出结果为0 f.seek(9,0) # 9 查看当前文件指针距离文件开头的位置,输出结果为9 f.seek(3,0) # 3 查看当前文件指针距离文件开头的位置,输出结果为3 print(f.tell()) # 3 查看当前文件指针距离文件开头的位置,最终输出结果为3 with open('a.txt',mode='rb') as f: print(f.tell()) #0 从指针当前位置往后移动0个字节,而此时的当前位置就是文件开头 f.seek(9,1) # 9 从当前位置往后移动9个字节,而此时的当前位置就是文件开头 f.seek(3,1) # 12 从当前位置往后移动3个字节,而此时的当前位置9 print(f.tell()) # 12 从当前位置往后移动3个字节,而此时的当前位置9 with open('a.txt',mode='rb') as f: print(f.tell()) #0 从指针当前位置往后移动0个字节,而此时的当前位置就是文件开头 f.seek(0,2) # 参照文件末尾移动19个字节, 即直接跳到文件末尾 print(f.tell()) # 19 输出结果为:19 with open('a.txt',mode='ab') as f: print(f.tell()) # 19 追加模式指针移动到最后,显示全部字节 # Linux命令:tail -f access.log
2、文件修改的两种方式
# 例如:a.txt 内容:hello你好kasjdkla # with open('a.txt', mode='r+t', encoding='utf-8') as f: # f.seek(9,0) # f.write("hello") #hello你�hellojdkla # PS:文件修改不是修改,而是执行覆盖命令 # 文件修改的原理: # 把硬盘数据读入内存,在内存修改完毕后,再覆盖回硬盘 # 具体来说又分为两种方案 # 方案一: 利:不占硬盘空间 弊:占据内存空间 with open('test.txt',mode='rt',encoding='utf-8') as f: data = f.read() with open('test.txt',mode='wt',encoding='utf-8') as f: f.write(data.replace('egon','EGON')) # 方案二: 利:不占内存空间 弊:占据硬盘空间(2倍) 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 值 调用函数语法: res = 函数名(值1,值2,值3) """ # ①定义函数 & 调用函数 # 1 定义函数与调用函数 # x = 10 # y = x # print(x) # def func(): # func = 函数的内存地址 # print("*" * 40) # print("hello".center(40, ' ')) # print('=' * 40) # # print(func) # f = func # f() # func() # 2 函数定义阶段发生的事情: # 申请内存空间,把函数体代码放进去,然后把内存地址绑定给函数名 # def func(): # print(1) # print(2 # print(3) # 3 函数调用阶段发生的事情: 执行函数体代码 # def func(): # print(1) # print(2) # asdf # print(3) # # func() # ps: 函数定义阶段只检测语法不执行代码,只有在调用函数时才会执行函数体代码 # ②函数的参数:形参与实参 # 函数的参数分为形式参数和实际参数,简称形参和实参: # 形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。 # 实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合: # # 例1: # def bar(): # print('from bar') # # def foo(): # print('from foo') # bar() # # foo() # from foo\n from bar # 例2: # def foo(): # print('from foo') # bar() # # def bar(): # print('from bar') # # foo() # from foo\n from bar # def add(x,y): # res = x + y # print(res) # add(1,2) # def func(x, y): # if x > y: # print(x) # else: # print(y) # func(11231231231, 22123123123213) # def login(inp_user,inp_pwd): # if inp_user == 'egon' and inp_pwd == "123": # print('ok') # else: # print('error') # login('egon',"123") # l = [111, 222, 333, 444, 555] # # size = len(l) # if size > 3: # print('ok') # else: # print('no') # def max2(sal1, sal2): # if sal1 > sal2: # return sal1 # else: # return sal2 # # res = max2(1000,2000) # print(res * 12) # l = [111, 22, 333] # res = l.append(4444) # res = l.pop() # print(res) # ③ 函数的返回值 # return返回值的语法: return也可以作为中断循环工具的语法。 # 函数内可以有多个return,但只要执行一次,整个函数就立即结束,并且将return后的值当作本次调用的产品返回 # def func(): # print('aaaa') # return 11111111111111 # print('bbbb') # return 2222222222 # print('cccc') # return 333333333 # # res = func() # print(res) # 具体来说函数的返回值有三种形式 # 1 return 值: 返回的就是改值本身/- # 2 return 值1,值2,值3:返回的是小元组 # def func(): # return 1111,"aaa",[11,222] # # x,y,z = func() # print(x,y,z) # # 3 没有return或者return无值或者return None:返回的都是None # def func(): # res = 1 + 2 # return # # res = func() # print(res)
4、模块
""" 1 什么是模块 模块一系列功能的集合体 模块分为四种通用的类别 1 使用python编写的.py文件 2 已被编译为共享库或DLL的C或C++扩展 # 不用 3 把一系列模块组织到一起的文件夹 (注:文件夹下有一个__init__.py文件,该文件夹称之为包) 4 使用C编写并链接到python解释器的内置模块 #不用 模块有三种来源: 1 python自带的模块/库 内置模块 标准库 2 第三方的库 3 自定义库 2 为何要用模块 1 拿来主义,提升开发效率 2 减少代码冗余 3 如何用模块 import from ... import """ # import spam # print(spam.x) # print(spam.f1) # print(spam.f2) # def f1(): # print('xxxxxxxx') # spam.f1() # spam.f2() # from spam import x,f1,f2 # def f1(): # print('xxxxx') # f1()
5、常用模块
# 一 time模块 import time # 时间戳 # print(time.time()) # 格式化的字符 # print(time.strftime('%Y-%m-%d %H:%M:%S')) # 结构化的时间 # obj = time.localtime() # print(obj.tm_year) # print(obj.tm_yday) # print(obj) # obj2 = time.gmtime() # utc # print(obj2) # 二 random模块 import random # print(random.random()) # print(random.randint(1,3)) # print(random.randrange(1,3)) # print(random.choice([11,"aaa",333])) # print(random.sample([11,"aaa",333,444],2)) # print(random.uniform(1, 3)) # item=[1,3,5,7,9] # random.shuffle(item) # print(item) # 储备知识 # print(chr(65)) # print(chr(90)) # # print(ord('A')) # print(ord('Z')) # 随机验证码游戏: import random def make_code(size): res = '' for i in range(size): num = str(random.randint(0,9)) s = chr(random.randint(65,90)) res += random.choice([num,s]) return res print(make_code(6))
这篇关于python知识心得10的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器