每篇必看前言:
该笔记适用于有C/C++/Java基础的想要迅速掌握Python语法的人。
该笔记是以B站黑马2022版教程为背景,所作的笔记。
往期链接:
网络编程:
服务端开发代码:
import socket
# 创建Socket_Server对象
socket_server=socket.socket()
# 绑定ip地址和端口
socket_server.bind(("localhost", 8800))
# 监听 listen方法中的整形参数表示允许连接的数量 不填的话会自动设置一个合理值
socket_server.listen()
# 获取客户端连接对象
result: tuple = socket_server.accept()
conn = result[0]
address = result[1]
# 第10、11、12行可以直接简写为 conn, address = socket_server.accept()
print(f"接收到了客户端连接,连接来自{address}")
# 通过客户端和服务端本次连接对象,即conn的recv方法,获取来自客户端的数据,注意recv方法返回值为bytes数组,所以要解码
while True:
data = conn.recv(1024).decode("UTF-8")
# 定义出口
if data == "exit":
break
else:
print(f"收到客户端发送的消息: {data}")
# 发送回复消息并编码
msg = input("请输入给客户端发送的消息:")
conn.send(msg.encode("UTF-8"))
# 关闭连接
conn.close()
socket_server.close()
客户端开发:
import socket
socket_client = socket.socket()
socket_client.connect(("localhost", 8800))
# 发送消息
while True:
data = input("请输入给服务端发送的消息:")
if data == "exit":
socket_client.send(data.encode("UTF-8"))
break
else:
socket_client.send(data.encode("UTF-8"))
msg = socket_client.recv(1024).decode("UTF-8")
print(f"收到服务端发送的消息:{msg}")
socket_client.close()
正则表达式:
普通匹配:
譬如对标准邮箱的正则表达式匹配:(^\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$)
match:
import re
s = "python itheima python"
result = re.match("python", s)
print(result)
print(result.span())
print(result.group())
s1 = "1python itheima python"
result1 = re.match("python", s1)
print(result1)
print(result1.span())
print(result1.group())
search:
search(匹配规则,被匹配字符串)从前向后搜索字符串,找到第一个匹配项后就停止。搜索完也没找到,返回None.
s2 = "python itheima python"
result2 = re.search("python", s2)
print(result2)
print(result2.span())
print(result2.group())
s3 = "1python itheima python"
result3 = re.search("python", s3)
print(result3)
print(result3.span())
print(result3.group())
findall:
findall(匹配规则,被匹配字符串),搜索整个字符串,找出全部匹配项组成的list,如果找不到则返回空list
s4 = "python itheima python"
result4 = re.findall("python", s4)
print(result4)
s5 = "1python itheima python"
result5 = re.findall("itcast", s5)
print(result5)
元字符匹配:
示例: 字符串 s = “itheima1 @@python2 !!666 ##itcast3”
找出全部数字: re.findall(r‘\d’, s) 字符串的r标记,表示当前字符串是原始字符串,即内部的转义字符无效而是普通字符
找出特殊字符: re.findall(r‘\W’, s)
找出全部英文字母: re.findall(r’[a-zA-Z]’, s) []内可以写:[a-zA-Z0-9] 这三种范围组合或指定单个字符如[aceDFG135]
匹配账号,只能由字母和数字组成,长度限制6到10位
规则为: ^[0-9a-zA-Z]{6, 10}$
匹配QQ号,要求纯数字,长度5-11,第一位不为0
规则为:^[1-9][0-9]{4, 10}& [1-9]
匹配第一位,[0-9]匹配后面4到10位 匹配邮箱地址,只允许qq、163、gmail这三种邮箱地址
规则为:^[\w-]+(\.[\w-]+)*@(qq|163|gmail)(\.[\w-]+)+$
递归遍历文件夹:
os模块的3个方法
os.listdir,列出指定目录下的内容
os.path.isdir,判断给定路径是否是文件夹,是返回True,否返回False
os.path.exists,判断给定路径是否存在,存在返回True,否则返回False
import os.path
def get_files_recursion(path):
file_list = []
if os.path.exists(path): # 如果当前路径存在
for f in os.listdir(path): # 列出当前路径下的所有文件
new_path = path + "\\" + f # 通过拼接得到新路径
if os.path.isdir(new_path): # 判断新路径目录是否为文件夹
file_list += get_files_recursion(new_path)
else:
file_list.append(new_path)
else:
print(f"指定目录{path}不存在,请重试")
return []
return file_list
if __name__ == '__main__':
for f in get_files_recursion("D:\dev"):
print(f)
import os.path
file_li = []
def get_files_recursion(path):
if os.path.exists(path): # 如果当前路径存在
for f in os.listdir(path): # 列出当前路径下的所有文件
new_path = path + "\\" + f # 通过拼接得到新路径
if os.path.isdir(new_path): # 判断新路径目录是否为文件夹
get_files_recursion(new_path)
else:
file_li.append(new_path)
else:
print(f"指定目录{path}不存在,请重试")
return []
if __name__ == '__main__':
get_files_recursion("D:\dev")
for f in file_li:
print(f)