Python高级知识练习

# ------------------*************正则表达式**********--------------
# match  用于指定文本模式和待匹配的字符串,起始要匹配对
# import re
# m = re.match("qyc","qyc")
# if m is not None:
#     print(m.group())
# print(m.__class__.__name__)
# print(m)
#
# n = re.match("qyc","qychy")   #起始必须匹配,否则为None
# if n is not None:
#     print(n.group())
# print(n.__class__.__name__)
# print(n)

# search  搜索文本内包含指定字符
#匹配多个字符串   |
# import re
# n = "qyc|hy"
# m = re.search(n,"hyqyyqyc")   #从0开始计数,匹配一个,结尾截至
# if m is not None:
#     print(m.group())
# print(m)
# <_sre.SRE_Match object; span=(5, 8), match='qyc'>
# <_sre.SRE_Match object; span=(0, 2), match='hy'>

#  . 匹配如何单个字符,.占一个字符
# import re
# m = "qy."
# n = re.search(m,"asdasqychy")
# if n is not None:
#     print(n.group())
# print(n)

#使用字符集
# [ab] 表示或  a|b
#[ab][cd]  ac ad bc bd
# m = "[ab]"
# import re
# n = re.match(m,"bcb")
# if n is not None:
#     print(n)
# <_sre.SRE_Match object; span=(0, 1), match='b'>

# m = "[ab][cd]"
# import re
# n = re.match(m,"bcb")
# if n is not None:
#     print(n)
# <_sre.SRE_Match object; span=(0, 2), match='bc'>

# 重复,可选和特殊字符 * 0-n  + 1-n
# import re
# s = "a*"
# a = ["","a","aa","aaa","baa"]
# for i in a:
#     m = re.match(s,i)
#     if m is not None:
#         print(m)
# <_sre.SRE_Match object; span=(0, 0), match=''>
# <_sre.SRE_Match object; span=(0, 1), match='a'>
# <_sre.SRE_Match object; span=(0, 2), match='aa'>
# <_sre.SRE_Match object; span=(0, 3), match='aaa'>
# <_sre.SRE_Match object; span=(0, 0), match=''>          a*可以匹配空串

# import re
# s = "a+"
# a = ["","a","aa","aaa","baa"]
# for i in a:
#     m = re.match(s,i)
#     if m is not None:
#         print(m)
# <_sre.SRE_Match object; span=(0, 1), match='a'>
# <_sre.SRE_Match object; span=(0, 2), match='aa'>
# <_sre.SRE_Match object; span=(0, 3), match='aaa'>


#   |w 任意一个字符或数字  |d 任意一个数字  ?可有可无
# import re
# m = "(\w)*abc(d?)(\d?)+"
# n = re.search(m,"qabcd11")
# if n is not None:
#     print(n)



# {3}代表三个
# a = "a{3}"
# import re
# m = re.search(a,"bhaa")
# if m is not None:
#     print(m)

# 匹配一个邮箱
# email = "[a-zA-Z0-9]+@(\w+\.)*\w+\.com"
# import re
# m = re.search(email,"1227694865@qq.com")
# if m is not None:
#     print(m)

# 分组
# import re
# m = re.match("(\d{3})-(\d{2})","123-2266")
# if m is not None:
#     print(m)
# print(m.group(1))
# print(m.group(2))

# 匹配字符串 开始^   结束 $  \b表示单词边界

# findall finditer 查找每一次出现的位置
# import re
# a = "11-abc-22-hy-333-qyc-444"
# m = re.findall(r"\d{2}-[a-z]{3}",a,re.I)  #设置大小写不敏感
# if m is not None:
#     print(m)
# for i in m:
#     print(i)

# finditer  返回迭代器
# import re
# a = "11-abc-22-hy-333-qyc-444"
# m = re.finditer(r"\d{2}-[a-z]{3}",a,re.I)  #设置大小写不敏感
# if m is not None:
#     print(m)
# for i in m:
#     print(i)
    # print(i.group())
# <callable_iterator object at 0x007C65B0>
# <_sre.SRE_Match object; span=(0, 6), match='11-abc'>
# <_sre.SRE_Match object; span=(14, 20), match='33-qyc'>


# sub 和 subn 搜索与替换
# sub 返回替换后的结果   模式字符串  要替换的字符串  被替换的字符串
# import re
# a = "11-abc-22-hy-333-qyc-444"
# m = re.sub(r"\d{2}-[a-z]{3}","被替换",a)
# if m is not None:
#     print(m)
# 被替换-22-hy-3被替换-444

# subn 返回一个元组,替换后的结果和总数
# import re
# a = "11-abc-22-hy-333-qyc-444"
# m = re.subn(r"\d{2}-[a-z]{3}","被替换",a)
# if m is not None:
#     print(m)
# ('被替换-22-hy-3被替换-444', 2)

#  split分隔字符串
# import re
# a = re.split("、","强月城、黄燕、java、Python")
# print(a)
# ['强月城', '黄燕', 'java', 'Python']

#一些常用的正则表达式
# Email "[0-9a-zA-Z]+@(\w\.)*\w+\.[a-z]{3}"
# import re
# a = "1227694865@qq.com"
# b = re.match("[0-9a-zA-Z]+@(\w\.)*\w+\.[a-z]{3}",a)
# print(b.group())

# IP地址 IPV4  "\d{1,3}"
# import re
# a = "192.168.32.128"
# b = re.match("\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}",a)
# print(b.group())

# 练习
# a = ["bat","Bit","But","hAt","hit","hut"]
# import re
# for i in a:
#     b = re.match("[bh][aiu]t$",i,re.I)
#     if b is not None:
#         print(b)
# <_sre.SRE_Match object; span=(0, 3), match='bat'>
# <_sre.SRE_Match object; span=(0, 3), match='Bit'>
# <_sre.SRE_Match object; span=(0, 3), match='But'>
# <_sre.SRE_Match object; span=(0, 3), match='hAt'>
# <_sre.SRE_Match object; span=(0, 3), match='hit'>
# <_sre.SRE_Match object; span=(0, 3), match='hut'>

# import re
# a = "1111 2222 3333 4444"
# b = re.match("\d{4} \d{4} \d{4} \d{4}$",a)
# if b is not None:
#     print(b)

# a = "2020-10-06"
# import re
# b = re.search("\d{4}-\d\d?-\d\d?$",a)
# print(b)


# ----------------**********常用模块**********---------
# sys 模块 定义了一些函数和变量 用来设置和获取系统信息
import sys
# print(sys.platform)  当前平台标识符  mac os为darwin    windows为win32
# print(sys.argv)  ['D:/自编程序/studyPython/lean2.py']  命令行名称,argv[1]代表第一个命令行参数
# print(sys.modules)  已经装载的模块列表
# print(sys.stdout)  <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'>  标准输出流
# print(sys.stdin) <_io.TextIOWrapper name='<stdin>' mode='r' encoding='UTF-8'>  标准输入流
# print(sys.stderr) <_io.TextIOWrapper name='<stderr>' mode='w' encoding='UTF-8'> 标准错误流



# os 包括子模块path  包含了大量获取各种系统信息,以及对系统进行设置的函数
import os
# print("当前工作目录:"+os.getcwd()) 当前工作目录:D:\自编程序\studyPython
# print(os.listdir(os.getcwd())) 当前工作目录下的文件:['.idea', 'lean1.py', 'lean2.py']
# 改变当前工作目录
# os.chdir("C:")   ../返回上级
# print()
# j = 0;
# for i in os.listdir(os.getcwd()):
#     print(i)
#     j=j+1;
# print(j)

# 文件与目录操作
# os.chdir("H:\py")
# if not os.path.exists("hy"):  os.path.exists校验方法
#     os.mkdir("hy")
# os.mkdir("hy")  第二个参数  0o777表示wrx权限
# mkdir 当目录存在时:FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'hy'
# os.chdir("H:\py")
# os.makedirs("a/b/c")  创建多级目录  第二个参数为权限  第三个参数为false 目录存在会抛出异常
# os.rmdir("hy")
# os.removedirs("a/b/c")  会abc全删掉
# os.remove("hy.txt")
# os.rename("hy.txt","hy")  改改名字
# os.renames("1/2/3","a/b/c")

#  软链接与硬链接  快捷方式/文件的拷贝  文件修改后,另一方也会改变
# os.chdir("H:\py")
# print(os.listdir(os.getcwd()))
# os.symlink("qyc.txt","qycr.txt")  #要有管理员权限  管理员运行cmd  然后运行py程序
# os.link("qcc.txt","qccy.txt")

# 杂项
# print(os.sep) sep 返回平台路径分隔符 \
# print(os.pathsep) 返回环境变量之间的分隔符 ;
# print(os.name) nt 返回当前os名称
# print(os.environ)  以字典形式返回所有环境变量的值
# print(os.getenv("Path"))  获取指定环境变量的值
# os.putenv()设置环境变量
# os.system("dir")  执行命令

# 集合
# a = set([1,2,3])
# b = set((3,4,5))
# c = a.union(b)  合并
# d = a|b 合并
# e = a&b  交集
# print(e)

# a = set([1,2,4])
# b = set([1,2,3])
# print(a.issubset(b)) True  a是否为b的子集
# print(b.issuperset(a)) #   超集
# print(b-a)  计算集合差
# print(b.difference(a))
# print(a^b) {3, 4}  对称差,相当于a-b|b-a
# in 属于



#堆
# from heapq import *
# from random import *
# data = [6,7,2,9,7,6,7,8,1]
# heap = []  #堆就是一个列表,只是heapq中的函数利用堆算法来改变列表中的元素而已
# for n in data:
#     val = choice(data)   #在列表中随机选取
#     print(val,end=" ")
#     heappush(heap,val)   #heappush  将value加入堆
# print(heap)
#
# print(heappop(heap))
# print(heap)
# # heapify(data)  #直接把data转换为堆
# # print(data)  #1, 2, 6, 7, 7, 6, 7, 9, 8
#
# print(heapreplace(heap, 100))   #弹出最小值并插入一个值
# print(heap)
#
# print(nlargest(1, heap))   #得到最大的一个值
# print(nlargest(2, heap))   #得到最大的俩个值
#
# print(nsmallest(1, heap))  #得到最小值
# print(nsmallest(2, heap))
#
# print(list(merge([1, 3, 5], [2, 4, 6],[])))   #合并有序集合



# 双端队列
# 双端队列头尾都能进行操作
# from collections import deque
# q = deque(range(10))   #创建一个包含10个数字的双端队列
# print(q)  #deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# q.append(100)  #将100追加到q的队尾
# print(q)
# q.appendleft(-1)   #在队首加-1
# print(q)
# print(q.pop())   #弹出队尾
# print(q.popleft())  #弹出队首
# print(q)
# # q.rotate(-2)  #向左循环
# print(q)
# # deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# # deque([2, 3, 4, 5, 6, 7, 8, 9, 0, 1])
# q.rotate(4)   #向右循环
# print(q)
# # deque([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# # deque([6, 7, 8, 9, 0, 1, 2, 3, 4, 5])
#
# # 创建双端队列
# q1 = deque([111,222,333])
# q.extend(q1)
# print(q)
# q.extendleft(q1)  #q1会倒序
# print(q)

# 时间日期time
# import time
# ticks = time.time()
# print(ticks)  #1603118556.3775516   到1971年1月1日午夜之间的秒数
# localtime = time.localtime(time.time())
# print(localtime) #time.struct_time(tm_year=2020, tm_mon=10, tm_mday=19, tm_hour=22, tm_min=46, tm_sec=47, tm_wday=0,一周的第几日  tm_yday=293,一年的第几日 tm_isdst=0 夏令时)
# # 获取可读时间
# print(time.asctime(time.localtime(time.time()))) #Mon Oct 19 22:52:46 2020

# 格式化日期和时间 strftime(格式化字符串,时间元祖)
# %y 俩位数年份  m月 d日  H24时   l12小时 M分钟数 S秒
# a简化星期名称 A完整星期名称 b简化月份名称 B完整月份名称
# c本地日期和时间 j一年中第几天  pAM PM U一年中的星期数,星期日为一个星期的开始 w星期 W一年中的星期数 星期1为开始
# x本地日期  X本地时间 Z当前时区名称 %%百分号本身

# import time
# import locale
#  ----------------报错了 locale.setlocale(locale.LC_ALL,'zh_CN.UTF-8')  #设置为utf-8  格式化字符串支持中文
# print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time())))
# print(time.strftime("a %a--%A  b %b--%B  c %c  j %j   p %p   U %U   w %w   W %W   x %x   X %X   Z %Z",time.localtime(time.time())))
# a Mon--Monday  b Oct--October  c Mon Oct 19 23:15:32 2020  j 293   p PM   U 42   w 1   W 42   x 10/19/20   X 23:15:32   Z ?D1¨²¡À¨º¡Á?¨º¡À??

# 时间戳的增量
# import time
# time1 = time.time()
# time2 = time1+60 #加1分钟   60秒   60*60 一小时  60*60*24一天
# print(time1) 1603120709.662133
# print(time2) 1603120769.662133

# 计算日期和时间的插值
# import datetime
# import time
# d1 = datetime.datetime(2017,4,12)
# d2 = datetime.datetime(2018,12,25)
# print((d2-d1).days)  #.seconds 求秒数
# d3 = datetime.datetime.now()
# print(d3) #2020-10-19 23:24:22.045103
# d4 = d3 + datetime.timedelta(hours=10)   #往后延迟10小时
# print(d4) #2020-10-20 09:25:39.396251
# print(time.localtime(d4.timestamp()))  #转换为时间元祖

# 获取某月某年的日历
# import calendar
# import locale
# cal = calendar.month(2020,10)
# print(cal)
#     October 2020
# Mo Tu We Th Fr Sa Su
#           1  2  3  4
#  5  6  7  8  9 10 11
# 12 13 14 15 16 17 18
# 19 20 21 22 23 24 25
# 26 27 28 29 30 31
# locale.setlocale(locale.LC_ALL,"zh_CN.UTF-8")  #中文
# cal1 = calendar.month(2020,10)
# print(cal1)
#       十月 2020
# 周一 周二 周三 周四 周五 周六 周日
#           1  2  3  4
#  5  6  7  8  9 10 11
# 12 13 14 15 16 17 18
# 19 20 21 22 23 24 25
# 26 27 28 29 30 31

# print(calendar.calendar(2020))
#                                   2020
#
#       January                   February                   March
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#        1  2  3  4  5                      1  2                         1
#  6  7  8  9 10 11 12       3  4  5  6  7  8  9       2  3  4  5  6  7  8
# 13 14 15 16 17 18 19      10 11 12 13 14 15 16       9 10 11 12 13 14 15
# 20 21 22 23 24 25 26      17 18 19 20 21 22 23      16 17 18 19 20 21 22
# 27 28 29 30 31            24 25 26 27 28 29         23 24 25 26 27 28 29
#                                                     30 31
#
#        April                      May                       June
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#        1  2  3  4  5                   1  2  3       1  2  3  4  5  6  7
#  6  7  8  9 10 11 12       4  5  6  7  8  9 10       8  9 10 11 12 13 14
# 13 14 15 16 17 18 19      11 12 13 14 15 16 17      15 16 17 18 19 20 21
# 20 21 22 23 24 25 26      18 19 20 21 22 23 24      22 23 24 25 26 27 28
# 27 28 29 30               25 26 27 28 29 30 31      29 30
#
#         July                     August                  September
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#        1  2  3  4  5                      1  2          1  2  3  4  5  6
#  6  7  8  9 10 11 12       3  4  5  6  7  8  9       7  8  9 10 11 12 13
# 13 14 15 16 17 18 19      10 11 12 13 14 15 16      14 15 16 17 18 19 20
# 20 21 22 23 24 25 26      17 18 19 20 21 22 23      21 22 23 24 25 26 27
# 27 28 29 30 31            24 25 26 27 28 29 30      28 29 30
#                           31
#
#       October                   November                  December
# Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
#           1  2  3  4                         1          1  2  3  4  5  6
#  5  6  7  8  9 10 11       2  3  4  5  6  7  8       7  8  9 10 11 12 13
# 12 13 14 15 16 17 18       9 10 11 12 13 14 15      14 15 16 17 18 19 20
# 19 20 21 22 23 24 25      16 17 18 19 20 21 22      21 22 23 24 25 26 27
# 26 27 28 29 30 31         23 24 25 26 27 28 29      28 29 30 31
#                           30

# random  随机数
# randint(m,n) 包括m n
# random()0-1 包括0不包括1
# uniform(m,n)  阐述m-n的随机浮点数   包括m,n
# randrange(m,n,step)  在一个递增的序列中随机选择一个整数,step为步长, 1,6,2 【1,3,5】
#choice(seq)  从seq指定的序列中随机选择一个元素值,seq指定的列表元素可以是任意类型的值
#sample(seq,k)  随机选择k个元素
# shuffle(seq) 从seq指定的序列中元素的顺序打乱,该函数直接修改原有序列
# import random
# print(random.randint(1,10))
# print(random.random())
# print(random.randrange(1,3,1))  #不包括3
# print(random.uniform(1,1.5))
# list = [1,2,3,4,5,"a","b","c","d"]
# print(random.choice(list)) #随机选择一个元素
# print(random.sample(list,2))  #随机选择俩个
# random.shuffle(list)
# print(list) #[1, 3, 'b', 5, 'a', 'd', 2, 4, 'c']

 #math
# import math
# print("圆周率:",math.pi)
# print("自然常熟:",math.e)
# print("绝对值:",math.fabs(-10))
# print("向上取整:",math.ceil(1.4),"   ",math.ceil(1.8))
# print("向下取整:",math.floor(1.4),"   ",math.floor(1.8))
# print("次方:",math.pow(2,4))
# print("平方根:",math.sqrt(9),"  ",math.sqrt(8))
# print("正弦:",math.sin(math.pi/2))
# print("余弦:",math.cos(math.pi))
# print("正切:",math.tan(math.pi/4))
# 圆周率: 3.141592653589793
# 自然常熟: 2.718281828459045
# 绝对值: 10.0
# 向下取整: 2     2
# 向上取整: 1     1
# 次方: 16.0
# 平方根: 3.0    2.8284271247461903
# 正弦: 1.0
# 余弦: -1.0
# 正切: 0.9999999999999999



# ----------------***********文件和流****************------------------
# a 追加   w写  默认读   x排他的写模式  a追加模式   b二进制模式  t文本模式  +读写模式,必须与其他文件模式一起使用
# r+ 如果文件不存在抛异常   w+ 文件可读写 清空文件  a+ 若文件不存在创建新文件夹,存在文件指针在末尾
# try:
#     f = open("H:/qyc.txt", "a+")
#     f.seek(0)
#     print(f.read())
#     print(f.write("ssg"))
# finally:
#     f.close()

# -----writelines    readline  readlines
# import os
# f =  open("H:/qyc.txt", "w+")
# a = ["第1行"+os.linesep,"第2行"+os.linesep,"第3行"+os.linesep]
# a = ["第1行"+"\n","第2行"+"\n","第3行"+"\n"]
# f.writelines(a)
# f.close()
# f =  open("H:/qyc.txt", "r")
# print(f.read())


# f.seek(0)
# print(f.readlines())

# --------***********使用fileInput
# import fileinput
# file = fileinput.input("H:/qyc.txt")
# print(type(file)) #<class 'fileinput.FileInput'>
# # 输出第一行 rstrip() 取出后面的空白字符
# print(file.readline().rstrip())
#
# for line in file:
#     line = line.rstrip()
#     if line != "":
#         print(file.lineno(),":",line)



#-----------------------********数据&存储********-----------------
#处理json格式数据
# loads  json -> 字典
# dumps  字典->json

# import json
# peo = {
#     'name':"强月城",
#     'age':22,
#     'aihao':"huangyan"
# }
# js = json.dumps(peo,ensure_ascii=False)  #正常显示中文
# print(js)  #{"name": "\u5f3a\u6708\u57ce", "age": 22, "aihao": "huangyan"}
# print(type(js)) #<class 'str'>
#
# data = json.loads(js)
# print(data) #{'name': '强月城', 'age': 22, 'aihao': 'huangyan'}

# 转换为类实例
# class People:
#     def __init__(self,d):
#         self.__dict__ = d
#
# js = {"name": "\u5f3a\u6708\u57ce", "age": 22, "aihao": "huangyan"};
# peo = People(js)
# print(peo.name)
# print(peo.age)
# print(peo.aihao)
# 强月城
# 22
# huangyan


# SQLite


#MySQL
# pip install pymysql
#  connect 连接数据库  cursor 操作数据库的cursor对象 execute执行sql语句  commit 提交对数据库的修改  rollback回滚
# import pymysql
# import json
# def connectDB():
#     db = pymysql.connect("127.0.0.1",user="root",passwd="123456",db="db_lcbk",charset='utf8')
#     return db

# 创建persons表
# def createTable(db):
#     cursor=db.cursor()
#     sql='''CREATE TABLE persons
#     (id INT PRIMARY KEY NOT NULL,name TEXT NOT NULL,age INT NOT NULL,address CHAR(50),salary REAL);
#     '''
#     try:
#         cursor.execute(sql)
#         db.commit()
#         return True
#     except:
#         return False


# db = connectDB()
# createTable(db)
#插入四条数据
# def insertRecords(db):
#     cursor=db.cursor()
#     try:
#         cursor.execute("INSERT INTO persons (id,name,age,address,salary) VALUES (2,'强月城',22,'zhongguo',2000.000)")
#         db.commit()
#         return True
#     except:
#         return False
# print(insertRecords(db))

#删除
# def delete(db):
#     cursor = db.cursor()
#     try:
#         cursor.execute("delete from persons")
#         db.commit()
#         return True
#     except:
#         return False
# delete(db)

# 查询
# def select(db):
#     cursor = db.cursor()
#     try:
#         cursor.execute("select * from persons where age>=21 order by age desc")
#         result = cursor.fetchall()
#         print(result)
#         fields = ["id","name","age","address","salary"]
#         records = []
#         for row in result:
#             records.append(dict(zip(fields,row)))
#         return json.dumps(records,ensure_ascii=False)
#     except:
#         print("出错了")
#         return None
# print(select(db))
# ((3, '强月城', 22, 'zhongguo', 2000.0), (2, '强', 21, 'zhongguo', 2000.0))
# [{"id": 3, "name": "强月城", "age": 22, "address": "zhongguo", "salary": 2000.0},
#  {"id": 2, "name": "强", "age": 21, "address": "zhongguo", "salary": 2000.0}]

# --------------******************mongodb*****************---------------
# import pymongo
# client = pymongo.MongoClient(host='101.200.201.196', port=27017)
# mydb = client["mydatabase"]  #创建数据库   指定数据库
# mycol = mydb["myList"]       #创建集合      指定集合

#--------***********增****--------
# mydict = {"name":"hy","age":20,"sex":"女"}
# x = mycol.insert(mydict)   #插入
# y = mycol.insert_one(mydict)   #返回ID插入 5f904fc225a54e6c9f90263e
# print(y.inserted_id)
# z = mycol.insert_many([{"name": "q1", "age": 1, "sex": "男"}, #插入多个
#                       {"name": "q2", "age": 2, "sex": "男"},
#                       {"name": "q3", "age": 3, "sex": "男"},
#                       {"name": "q4", "age": 4, "sex": "男"}])
# z = mycol.insert_many([{"_id":1,"name": "q1", "age": 1, "sex": "男"}, #插入多个指定ID
#                       {"_id":2,"name": "q2", "age": 2, "sex": "男"},
#                       {"_id":3,"name": "q3", "age": 3, "sex": "男"},
#                       {"_id":4,"name": "q4", "age": 4, "sex": "男"}])
# print(z.inserted_ids)
#[ObjectId('5f9050d72896de5fe77ea66d'), ObjectId('5f9050d72896de5fe77ea66e'),
# ObjectId('5f9050d72896de5fe77ea66f'), ObjectId('5f9050d72896de5fe77ea670')]
# print(client.list_database_names())  #查看所有数据库
# print(mydb.list_collection_names())  #查看数据库集合

#---------*******删******---------
# myque = {"name":"q1"}
# mycol.delete_one(myque)
# list = {"name":"q2"}
# mycol.delete_many(list)

# 删除所有
# my = {}
# mycol.delete_many(my)

#删集合
# mycol.drop()



#---------******改******---------
# old = {"name":"qyc"}
# new = {"$set":{"name":"love"}}
# x = mycol.update_one(old,new)  #修改一条   many修改多条
#
# a = mycol.find()
# for i in a:
#     print(i)


#--------*******查*****----------
# x = mycol.find_one() #查一条
# print(x)
# y = mycol.find()  #查全部
# for i in y:
#     print(i)

# z = mycol.find({},{"name":1})  #不能同时设置1和0   1代表查询  0代表去掉字段
# for i in z:
#     print(i)
# {'_id': 1, 'name': 'q1'}
# {'_id': 2, 'name': 'q2'}
# {'_id': 3, 'name': 'q3'}
# {'_id': 4, 'name': 'q4'}

# 指定条件
# a = mycol.find({"name":"qyc"})
# for i in a:
#     print(i)
# {'_id': ObjectId('5f904dfe47ed0fafe0de9ef4'), 'name': 'qyc', 'age': 22, 'sex': '男'}

# b = mycol.find({"age":{"$gt":3}})  #大于3
# for i in b:
#     print(i)


# 指定条数
# a = mycol.find().limit(4)
# for i in a:
#     print(i)



#-------------*********TCP于UDP编程**********----------
#客户端套接字 socket
# 服务端套接字 socketserver
#TCP   面向连接的 SOCK_STREAM
#UPD   无连接   SOCK_DGRAM


# 步骤
from socket import *
# 1.创建socket对象
host = ""
bufferSize = 102400
prot = 1314
addr = (host,prot)
tcpServerSoctet = socket(AF_INET,SOCK_STREAM)  #AF_INET IPv4   AF_INET6 IPv6    STREAM TCP
# 2.绑定端口号
tcpServerSoctet.bind(addr)
# 3.监听端口号
tcpServerSoctet.listen()
print("server port: 1314 正在等待客户端连接")
# 4.等待客户端socket的连接
tcpClientSocket,addr = tcpServerSoctet.accept()
print("客户端已经连接","addr:",addr)
# 5.读取客户端发送过来的数据
data = tcpClientSocket.recv(bufferSize)
print(data.decode('utf8'))
# 6.向客户端发送数据
tcpClientSocket.send('你好socket.\n'.encode(encoding='utf-8'))
# 7.关闭客户端socket连接
tcpClientSocket.close()
# 8.关闭服务端socket连接
tcpServerSoctet.close()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值