6.30内容整理和概述
6.30内容整理和概述
昨天作业回顾
第一题:
编写简易版本的拷贝工具
本人代码:
ta_path = input("请输入数据路径:")
dest_path = input("请输入拷贝路径:")
with open(sta_path, 'rb') as f, open(dest_path, 'wb') as h:
content = f.read()
h.write(content)
jason代码:
source_file_path = input('请输入想要拷贝的数据路径>>>:').strip()
source_file_path = input('请输入想要拷贝的数据路径>>>:').strip()
with open(r'%s' % source_file_path, 'rb') as f1, open(r'%s' % target_file_path, 'wb') as f2:
for line in f1:
f2.write(line)
思考:
1.整体思路一样,还需注意两个小点
2.获取输入时还是得注意strip()方法的调用,得养成习惯
3.命名还得多练练,要简明知义
第二题:
本人代码:
flag = True
while flag:
print("""
----------------login / register------------------
1.登录
2.注册
------------------------------------------------
""")
lr_order = input("请选择登录或注册(1/2):")
if lr_order and lr_order.isdigit() == True:
if int(lr_order) == 1:
print("欢迎登录")
with open(r'D:\aa\client.txt', 'a', encoding='utf8') as premise:
pass
log_name = input("请输入用户名:")
log_password = input("请输入密码:")
if log_name and log_password.isdigit():
with open(r'D:\aa\client.txt','r',encoding='utf8') as login:
for log_client in login:
log_client_name= log_client.split('|',maxsplit=2)[0]
log_client_password = log_client.split('|',maxsplit=2)[1]
print(log_client_name)
print(log_client_password)
if log_client_name == log_name and log_client_password == log_password:
print("登录成功")
break
else:print("登录失败")
else:print("请输入正确格式")
elif int(lr_order) == 2:
reg_judge = True
while reg_judge:
print("欢迎注册")
reg_name = input("请输入用户名:")
reg_password = input("请输入用户密码:")
reg_age = input("请输入年龄:")
reg_number = input("请输入联系方式:")
if reg_name and reg_password.isdigit() and reg_age.isdigit() and reg_number.isdigit():
flag = True
with open(r'D:\aa\client.txt', 'r', encoding='utf8') as check:
for check_client in check:
check_name = check_client.split('|', maxsplit=2)[0]
if reg_name == check_name:
flag = False
if flag:
reg_list = []
reg_list = [reg_name,reg_password,reg_age,reg_number]
reg_client = '|'.join(reg_list)
with open(r'D:\aa\client.txt','a',encoding='utf8') as register:
register.write(reg_client)
register.write('\n')
print("注册成功")
reg_con_judge = True
while reg_con_judge:
reg_circle = input("是否需要继续注册(1>>是/2>>否):")
if reg_circle == "1":
break
elif reg_circle == "2":
reg_con_judge = False
reg_judge = False
elif reg_circle != "1" and reg_circle != "2":
print("请输入正确指令")
continue
else:print("用户名重复,请重试")
else:print("请输入正确格式")
else:
print("请输入正确指令")
flag = True
思考:
1.总体结构和功能没有大的毛病
2.不要同时对一个文件进行读和写,不会成功。
3.操作文本文件时,注意换行符
4.当路径为一个变量时,用r的方法依靠占位符,天才方法。
5.判断用户名存在时,最好不要用成员运算符,精度不高
今日内容概述
内容目录
- 文件内的光标移动
- 文件数据修改
- 函数简介
- 自学内容
文件内的光标移动
1.read(数字):
文本模式:在此模式下,代表从光标位置向后读取几个字符
二进制模式:在此模式下,代表从光标位置向后读取几个字节
2.tell():获取光标移动的字节数
3.seek(offset,whence): 移动光标
offset:控制光标移动的字节量,大小代表步长,正负代表方向。
whence:
0:将光标移动到文件开头
1:光标停留在当前位置
2. 光标移动到文件末尾
文件数据修改
两种方式:
1.覆盖写:先读取文件内容到内存 在内存中完成修改 之后w模式打开该文件写入
优点:硬盘只占用一块空间
缺点:数据量较大的时候会造成内存溢出
2.重命名:读取文件内容到内存 在内存中完成修改 之后保存到另外一个文件中,再将原文件删除 将新的文件重命名为原文件
小知识:
优点:不会造成内存溢出
缺点:有那么一段时间需要占用硬盘两个地方的空间(可能),也可能是在内存中创建没有刷到硬盘
机械硬盘储存数据用的是覆盖写,数据的删除,是将占有态数据转变为自由态数据。
函数简介
1.函数与循环的差别:
循环:在相同的位置反复执行相同的代码
函数:在不同的位置反复执行相同的代码
2.函数分为两类:
1.内置函数:Python自带函数。
2.自定义函数:是我们自主编写,并将其封装的函数。它不会产生返回值。
自学内容
1.r+:打开一个文件用于读写。文件指针将会放在文件的开头
2.w+:打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
3.a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写
4.rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
5.wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件
6.ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写
今日作业
from method import register
from method import login
flag = True
while flag:
print("""
# ----------------login / register------------------
#
# 1.登录
# 2.注册
#
# ------------------------------------------------
# """)
lr_order = input("请选择登录或注册(1/2):")
if lr_order and lr_order.isdigit() == True:
if int(lr_order) == 1:
print("欢迎登录")
login()
if int(lr_order) == 2:
print("欢迎注册")
register()
else:
print("请输入正确格式")
def register():
reg_judge = True
while reg_judge:
reg_name = input("请输入用户名:")
reg_password = input("请输入用户密码:")
reg_age = input("请输入年龄:")
reg_number = input("请输入联系方式:")
# 判断用户输入格式是否正确
if reg_name and reg_password.isdigit() and reg_age.isdigit() and reg_number.isdigit():
# 判断用户名是否重复
flag_check = True
with open(r'D:\aa\client.txt', 'r', encoding='utf8') as check:
for check_client in check:
check_name = check_client.split('|', maxsplit=2)[0]
if reg_name == check_name:
flag_check = False
# 注册操作
if flag_check:
reg_list = []
reg_list = [reg_name, reg_password, reg_age, reg_number]
reg_client = '|'.join(reg_list)
with open(r'D:\aa\client.txt', 'a', encoding='utf8') as register:
register.write(reg_client)
register.write('\n')
print("注册成功")
reg_con_judge = True
# 判断是否需要继续注册
while reg_con_judge:
reg_circle = input("是否需要继续注册(1>>是/2>>否):")
if reg_circle == "1":
break
elif reg_circle == "2":
reg_con_judge = False
reg_judge = False
elif reg_circle != "1" and reg_circle != "2":
print("请输入正确指令")
continue
else:
print("用户名重复,请重试")
else:
print("请输入正确格式")
def login():
with open(r'D:\aa\client.txt', 'a', encoding='utf8') as premise:
pass
log_name = input("请输入用户名:")
log_password = input("请输入密码:")
if log_name and log_password.isdigit():
with open(r'D:\aa\client.txt', 'r', encoding='utf8') as login:
for log_client in login:
log_client_name = log_client.split('|', maxsplit=2)[0]
log_client_password = log_client.split('|', maxsplit=2)[1]
if log_client_name == log_name and log_client_password == log_password:
print("登录成功")
break
else:
print("登录失败")
else:
print("请输入正确格式")

浙公网安备 33010602011771号