day13
f.seek的应用
1 import time 2 3 with open('access.log', mode='rb') as f: 4 # 1、将指针跳到文件末尾 5 # f.read() # 错误 6 f.seek(0,2) 7 8 while True: 9 line=f.readline() 10 if len(line) == 0: 11 time.sleep(0.3) 12 else: 13 print(line.decode('utf-8'),end='')
文件修改的两种方式
1 # with open('a.txt',mode='r+t',encoding='utf-8') as f: 2 # f.seek(9,0) 3 # f.write('<男妇女主任>') 4 5 6 # 文件修改的两种方式 7 # 方式一:文本编辑采用的就是这种方式 8 # 实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件 9 # 优点: 在文件修改过程中同一份数据只有一份 10 # 缺点: 会过多地占用内存 11 with open('c.txt',mode='rt',encoding='utf-8') as f: 12 res=f.read() 13 data=res.replace('alex','dsb') 14 print(data) 15 16 with open('c.txt',mode='wt',encoding='utf-8') as f1: 17 f1.write(data) 18 19 20 # 方式二: 21 import os 22 # 实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名 23 # 优点: 不会占用过多的内存 24 # 缺点: 在文件修改过程中同一份数据存了两份 25 with open('c.txt', mode='rt', encoding='utf-8') as f, \ 26 open('.c.txt.swap', mode='wt', encoding='utf-8') as f1: 27 for line in f: 28 f1.write(line.replace('alex', 'dsb')) 29 30 os.remove('c.txt') 31 os.rename('.c.txt.swap', 'c.txt') 32 33 34 35 # 36 # f = open('a.txt') 37 # res = f.read() 38 # print(res)
函数基本使用
1 1、什么是函数 2 函数就相当于具备某一功能的工具 3 函数的使用必须遵循一个原则: 4 先定义 5 后调用 6 2、为何要用函数 7 1、组织结构不清晰,可读性差 8 2、代码冗余 9 3、可维护性、扩展性差 10 11 3、如何用函数 12 先定义 13 三种定义方式 14 后调用 15 三种调用方式 16 17 返回值 18 三种返回值的形式 19 20 """ 21 # 一、先定义 22 # 定义的语法 23 ''' 24 def 函数名(参数1,参数2,...): 25 """文档描述""" 26 函数体 27 return 值 28 ''' 29 30 31 # 形式一:无参函数 32 # def func(): 33 # # x 34 # # print( 35 # print('哈哈哈') 36 # print('哈哈哈') 37 # print('哈哈哈') 38 39 # 定义函数发生的事情 40 # 1、申请内存空间保存函数体代码 41 # 2、将上述内存地址绑定函数名 42 # 3、定义函数不会执行函数体代码,但是会检测函数体语法 43 44 # 调用函数发生的事情 45 # 1、通过函数名找到函数的内存地址 46 # 2、然后加口号就是在触发函数体代码的执行 47 # print(func) 48 # func() 49 50 # 示范1 51 # def bar(): # bar=函数的内存地址 52 # print('from bar') 53 # 54 # def foo(): 55 # # print(bar) 56 # bar() 57 # print('from foo') 58 # 59 # foo() 60 61 # 示范2 62 # def foo(): 63 # # print(bar) 64 # bar() 65 # print('from foo') 66 # 67 # def bar(): # bar=函数的内存地址 68 # print('from bar') 69 # 70 # foo() 71 72 # 示范3 73 # def foo(): 74 # # print(bar) 75 # bar() 76 # print('from foo') 77 # 78 # foo() 79 # 80 # def bar(): # bar=函数的内存地址 81 # print('from bar') 82 83 # 形式二:有参函数 84 # def func(x,y): # x=1 y=2 85 # print(x,y) 86 # func(1,2) 87 88 # 形式三:空函数,函数体代码为pass 89 def func(x, y): 90 pass 91 92 93 # 三种定义方式各用在何处 94 # 1、无参函数的应用场景 95 # def interactive(): 96 # name=input('username>>: ') 97 # age=input('age>>: ') 98 # gender=input('gender>>: ') 99 # msg='名字:{} 年龄:{} 性别'.format(name,age,gender) 100 # print(msg) 101 # 102 # interactive() 103 # interactive() 104 # interactive() 105 # interactive() 106 107 # 2、有参函数的应用场景 108 # def add(x,y): # 参数-》原材料 109 # # x=20 110 # # y=30 111 # res=x + y 112 # # print(res) 113 # return res # 返回值-》产品 114 # 115 # # add(10,2) 116 # res=add(20,30) 117 # print(res) 118 119 # 3、空函数的应用场景 120 # def auth_user(): 121 # """user authentication function""" 122 # pass 123 # 124 # def download_file(): 125 # """download file function""" 126 # pass 127 # 128 # def upload_file(): 129 # """upload file function""" 130 # pass 131 # 132 # def ls(): 133 # """list contents function""" 134 # pass 135 # 136 # def cd(): 137 # """change directory""" 138 # pass 139 140 141 # 二、调用函数 142 # 1、语句的形式:只加括号调用函数 143 # interactive() 144 # add(1,2) 145 146 # 2、表达式形式: 147 # def add(x,y): # 参数-》原材料 148 # res=x + y 149 # return res # 返回值-》产品 150 # 赋值表达式 151 # res=add(1,2) 152 # print(res) 153 # 数学表达式 154 # res=add(1,2)*10 155 # print(res) 156 157 # 3、函数调用可以当做参数 158 # res=add(add(1,2),10) 159 # print(res) 160 161 # 三、函数返回值 162 # return是函数结束的标志,即函数体代码一旦运行到return会立刻 163 # 终止函数的运行,并且会将return后的值当做本次运行的结果返回: 164 # 1、返回None:函数体内没有return 165 # return 166 # return None 167 # 168 # 2、返回一个值:return 值 169 # def func(): 170 # return 10 171 # 172 # res=func() 173 # print(res) 174 175 # 3、返回多个值:用逗号分隔开多个值,会被return返回成元组 176 def func(): 177 return 10, 'aa', [1, 2] 178 179 res = func() 180 print(res, type(res))
浙公网安备 33010602011771号