今日内容
简易版本的拷贝功能
1.获取待拷贝的目标文件路径
2.获取即将拷贝到哪个地方的新路径
3.利用文件操作实现数据拷贝
1 # 1.需要拷贝的文件路径 2 wait_copy_file = input('file path>>>:').strip() 3 # 2.新的文件路径 4 new_file_path = input('new path>>>:').strip() 5 # 3.以r模式打开步骤1的路径 以w模式打开步骤2的路径 6 with open(r'%s' % wait_copy_file, 'rb') as f1, \ 7 open(r'%s' % new_file_path, 'wb') as f2: 8 for line in f1: 9 f2.write(line)
1 # with open(r'a.txt','rb') as f: 2 # # print(f.read()) 3 # print(f.read(6).decode('utf8')) 4 5 6 # with open(r'a.txt','r',encoding='utf8') as f: 7 # print(f.read()) 8 # print(f.read(4)) 9 10 """ 11 read() 括号内可以放数字 12 在t模式下表示字符个数 13 在b模式下表示字节个数 14 英文字符统一使用一个bytes来表示 15 中文字符统一使用三个bytes来表示 16 """
1 # with open(r'b.txt', 'rb') as f: 2 # print(f.read(4).decode('utf8')) 3 # print(f.tell()) # 查看光标移动了多少个字节 4 # f.seek(3, 1) 5 # print(f.read().decode('utf8')) 6 """ 7 控制文件内光标的移动 f.seek() 8 f.seek(offset,whence) 9 offset表示位移量 10 始终是以字节为最小单位 11 正数从左往右移动 12 负数从右往左移动 13 whence表示模式 14 0:以文件开头为参考系(支持tb两种模式) 15 1:只支持b模式 以当前位置为参考系 16 2:只支持b模式 以文件末尾为参考系 17 """ 18 19 # 小练习:实现动态查看最新一条日志的效果 20 import time 21 with open('a.txt', 'rb') as f: 22 f.seek(0, 2) 23 while True: 24 line = f.readline() 25 if len(line) == 0: 26 # 没有内容 27 time.sleep(0.5) 28 else: 29 print(line.decode('utf-8'), end='')
1 # 方式1 覆盖 2 # with open(r'c.txt','r',encoding='utf8') as f: 3 # data = f.read() 4 # # print(type(data)) 5 # with open(r'c.txt','w',encoding='utf8') as f1: 6 # new_data = data.replace('tony','jason') 7 # f1.write(new_data) 8 9 # 方式2 新建 10 import os 11 with open('c.txt', mode='rt', encoding='utf-8') as read_f, \ 12 open('c.txt.swap', mode='wt', encoding='utf-8') as write_f: 13 for line in read_f: 14 write_f.write(line.replace('SB', 'kevin')) 15 os.remove('c.txt') # 删除原文件 16 os.rename('c.txt.swap', 'c.txt') # 重命名文件 17 18 """ 19 自己总结两种方式的优缺点 20 """
函数简介?
函数就类似于是工具 提前定义好之后可以反复使用
def 函数名(参数1,参数2):
'''函数注释'''
函数体代码
return 返回值
1.def(必须的)
是定义函数的关键字
2.函数名(必须的)
是函数的名字 相当于变量名
函数名的命名规范与风格遵循变量名的
3.参数1,参数2(可选的)
参数可以没有也可以有多个
表示在使用函数之前需要满足的一些条件
4.函数注释(可选的)
类似于产品说明书
主要用于介绍函数功能 参数使用 及其他情况
5.函数体代码(必须的)
函数核心的代码逻辑(重要)
6.return返回值(可选的)
使用函数之后反馈给使用者的结果 可以有也可以没有
1.函数必须先定义后调用(顺序不能乱)
2.函数在定义阶段只检测语法不执行代码
3.函数在调用阶段才会执行函数体代码
如何调用函数
函数名加括号 如果函数在定义阶段有参数则在调用阶段也需要给参数
函数在定义与调用阶段底层![]()
函数在定义与调用阶段底层原理
1.在内存空间中申请一块空间存储函数体代码
2.将函数体代码所在的空间地址绑定给函数名
3.函数名加括号则会执行函数体代码
1.内置函数
python解释器自带的(提前给你定义好了 你直接使用即可)
2.自定义函数
程序员自己写的函数
2.1.无参函数
2.2.有参函数
2.3.空函数
无参函数
1 # 无参函数是指在函数定义中括号里面没有写参数(变量名) 2 def my_func(): 3 print('函数')
有参函数
1 # 有参函数是指在定义中括号里面写了参数(变量名) 2 def my_func(a,b): 3 print('函数') 4 my_func(1,2)
空函数:函数体代码为空(pass ...)
虽然空函数本身没有含义 但是空函数可以提前规定好编写代码的思路
1 def run(): 2 pass 3 def fight(): 4 pass 5 def talk(): 6 pass