一、#简化代码方式
#1、字典取 key 和 value,效率高
#字典取 key 和 value,先转为了二维数组拆包成了key 和 value
#for k,v in d.items():
# print(k,v)
#2、判断某一元素在不在里面
#u = '123'
#if u not in d:
# print('不存在')
二、#切片 list 范围取值的一种方式
#names = ['张丹雪','敖国茹','敖洺豪','我自己']
#print(names[0:2])#切片取值,顾头不顾尾的
#print(names[::2])#--[strat;end:步长]
#print(names[::-1])#步长为负数时,从右往左
#print(names[-2:-3:-1])#负数定取值范围时,都要用负数
三、#判断回文字符串
#s="A man, a plan, a canal: Panama"
#while True:
# s = input("请输入一个字符串:")
# new_s = ""
# for i in s:
# if i.isalnum():
# new_s = new_s.lower()
# if new_s == new_s[::-1]:
# print("这个字符串是回文字符串")
# else:
# print("这个字符串不是回文字符串")
四、#集合:天生去重,可以取交集,并集,差集
#交集
#list1=['我','自','己']
#list2=['我','你','他']
#print(list1.intersection(list2))
#print(list1&list2)
#并集,把两个集合合并到一起
#print(list1.union(list2))#并集
#print(list1 | list2)#取并集
#差集,在 a 里面存在,b 里面不存在的
#print(list1 - list2)
#print(list1.difference(list2))
#对称差集:a 里面有的,b 里面没有。b 里面没有,a 里面有的
#print(list1.symmetric_difference(list2))
#print(list1 ^ list2)
#判断 a 集合是不是 b 集合的一个子集
#print(list2.issubset(list1))
#集合是无序的
#添加元素
#list1.add("add")
#删除元素
#list1.remove("add")
#把一个集合加入到另一个集合里面
五、#1/打开文件
#2、读取、写入
#关闭
#f = open("users.txt",encoding="utf-8")
#ret = f.reda()#读取所有文件内容,返回的是一个字符串
#ret = f.readlines()#取所有文件内容,返回的是一个list,
#liat 每一个元素就是每一行
#ret = f.readline()#读取一行的数据
#f.close() #g关闭文件
#print(ret)
六、文件操作
模式
r
读模式,不能写,打开不存在的文件会报错
w
写模式,不能读,他会清空以前的文件。文件不存在
会新建一个文件
a
追加模式,只能写,不能读,文件不存在会新建
r+
读写模式
w+
写读模式
a+
追加读模式
写新文件:
w
只是读取的话,那么就用r模块
既想读,又想写,又不想清空以前的文件
a+模式和seek(0)
七、json
import json
#s="""
{
"code": 0,
"msg": "操作成功",
"token":"sdgdgsdgsds"
}
"""
# ret = json.loads(s) #json转字典的
# print(ret)
# print(type(ret))
d = {
"code": 0,
"msg": "操作成功",
"token":"sdgdgsdgsds"
}
ret = json.dumps(d,ensure_ascii=False,indent=4) #字典转json的
print(ret)
print(type(ret))
- 产生随机数
#coding=utf-8
import random,string
print(random.randint(100000,999999)) #产生随机整数
print(random.choice(["a","b","c"])) #随机选择一个元素
print(random.sample("abcdefg",7)) #随机取N个元素,返回的是一个list
print(random.uniform(1,10))#取随机浮点数
l = [1,2,3,4,5,6,7,8,9]
random.shuffle(l) #洗牌,打乱顺序,传入的是一个list,他会改变list的值
print(l)
print(string.digits)
print(string.ascii_lowercase)
print(string.ascii_uppercase)
print(string.ascii_letters)
print(string.punctuation)
- 给用户加密码
# import string,random,os
# f = open("stus.txt",encoding="utf-8")
# f2 = open("stus2.txt","w",encoding="utf-8")
#
# for line in f:
# line = line.strip()
# if line:
# a = random.sample(string.digits,3) #[1,2,3]
# b = random.sample(string.ascii_letters,3)#[a,b,c]
# print("A",a)
# print("b",b)
# password = "".join(a+b)
# print("password",password)
# new_line = "%s,%s\n" %(line,password)
# print("new_line",new_line)
# f2.write(new_line)
# f.close()
# f2.close()
#
# os.remove("stus.txt")
# os.rename("stus2.txt","stus.txt")
if line:
p = random.sample(string.ascii_letters+string.digits,6)
password = "".join(p)
print("password",password)
new_line = "%s,%s\n" %(line,password)
print("new_line",new_line)
f2.write(new_line)
f.close()
f2.close()
os.remove("stus.txt")
os.rename("stus2.txt","stus.txt")
- 监控日志
import time
file_name = "access.log"
point = 0
while True:
ips = {}
f = open(file_name,encoding="utf-8")
f.seek(point)
for line in f:
if line.strip():
ip = line.split()[0]
if ip not in ips: #第一次出现
ips[ip] = 1
else:
ips[ip]+=1
point = f.tell() #记录文件指针的位置
f.close()
for ip in ips:
count = ips[ip]
if count>=50:
print("%s在攻击你"%ip)
time.sleep(60)
import string,random,os
f = open("stus.txt",encoding="utf-8")
f2 = open("stus2.txt","w",encoding="utf-8")
for line in f:
line = line.strip()