python string与list互转
因为python的read和write方法的操作对象都是string。而操作二进制的时候会把string转换成list进行解析,解析后重新写入文件的时候,还得转换成string
import string
str = 'abcde'
list = list(str)
list
['a', 'b', 'c', 'd', 'e']
str
'abcde'
str_convert = ''.join(list)
str_convert
'abcde'
一、集合操作:交差并、对称差集;add,update,discard
二、检测密码的复杂度:
- 集合的交集和不重复性
- String模块提供的字符
- 字符串通过下标取值
- 字符串/数组通过set()方法转化成集合
#-*-coding:utf-8-*-
#校验密码复杂度:密码必须由数字、大小写字母特殊字符组成,且不能是数字开头
import string
all_num = set(string.digits)#0~9
all_upper = set(string.ascii_uppercase)#所有的大写字母
all_lower = set(string.ascii_lowercase)#所有的小写字母
all_punctuation = set(string.punctuation)#所有的特殊字符
pwd = input("pwd:")
set_pwd = set(pwd)
if set_pwd & all_num and set_pwd & all_upper and set_pwd & all_lower and set_pwd & all_punctuation :
if not all_num & set(pwd[0]):
print("校验密码复杂度合格")
文件操作:文件编码、当前指针位置、清空文件
三、监控日志:
- 使用with open()打开文件使用完后可以自动关闭不需要人为close()
- file.tell()#获取当前指针的位置
- 用for k in 字典名称直接遍历字典中的key;用for k,v in 字典名称直接遍历字典中的key,value;for k in user_info.items()获取字典中每一个key-vlaue('age', '23')对
- Time.sleep(60)间歇性循环执行程序
#-*-coding:utf-8-*-
#监控日志:监控一分钟内恶意攻击该服务器的ip
# 1.统计一分钟内每个ip的个数
#2.找到这些个ip个数>=100的
#3.输出警告这些ip存在恶意攻击的可能。
import time
point = 0#设置文件指针初始位置
while True:
with open('access.log','r+') as fread:
ip_info = {}#定义个字典ip_info={"10.4.25.122":34}
fread.seek(point)
for line in fread:
ip = line.split(' - - ')[0]#根据日志文件形式拆分出ip
if ip_info.get(ip) :
ip_info[ip]+=1
else:
ip_info[ip]=1
point = fread.tell()#获取当前指针的位置
print('当前指针的位置:%s'%point)
for k in ip_info:#直接遍历字典中的key
if ip_info.get(k)>=100:
print('该IP在攻击你%s'%ip_info.get(k))
time.sleep(60)#睡眠60秒
============================================================================================================
自定义函数:
https://www.jb51.net/article/83452.htm
第四周作业:
https://coding.net/u/yun_yuan/p/Python_BestTest/git/tree/master/day04/zuoye