十二、有C/C++/Java基础,迅速掌握Python,B站黑马2022版教程笔记(自用)

每篇必看前言:

该笔记适用于有C/C++/Java基础的想要迅速掌握Python语法的人。

该笔记是以B站黑马2022版教程为背景,所作的笔记。

往期链接:

 一、http://t.csdn.cn/SxJd9

二、http://t.csdn.cn/iQyaJ

三、http://t.csdn.cn/paJPt

四、http://t.csdn.cn/WbHMB

五、http://t.csdn.cn/uwENV

六、http://t.csdn.cn/aaKAb

七、http://t.csdn.cn/f8yZe

八、http://t.csdn.cn/G66Ra

九、http://t.csdn.cn/F6cmP

十、http://t.csdn.cn/0bv8X

十一、http://t.csdn.cn/lTYTO

网络编程:

服务端开发代码:

 

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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸡鸭扣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值