对目录的操作
import os
from os.path import join
for root, dir, files in os.walk('/var/log'): #os.walk
#print(root) # 查看路径
print(dir) # 查看名称
print(files)
for name in files:
print(join(root, name)) # 拼接
综合练习1
要求:
1,生成一个大文件ips.txt,要求1200行,每行随机为172.25.254.0/24段的IP;
2,读取ips.txt统计这个文件中IP出现排名前10的IP
import random
import ipaddress
"""
def decorator(func):
def wrapper(*args, **kwargs): # *args 多个函数的传入
func(*args, **kwargs) # 接收参数net4
return wrapper
"""
res = []
res1 = {}
res2 = {}
#@decorator
def IP_hosts(filename, net4):
for i in net4.hosts():
res.append(str(i))
with open(filename, 'w+') as f1:
for x in range(1200):
if x > 1200:
exit()
else:
IP_hosts(net4=ipaddress.ip_network('172.25.254.0/24'))
ip = random.choice(res)
f1.write((ip) + '\n')
f1.seek(0)
print(f1.read())
def Sorted_by_IP(filename, count=10):
with open(filename) as f2:
for ip in f2:
ip = ip.strip()
if ip in res2:
res2[ip] += 1
else:
res2[ip] = 1
res1 = sorted(res2.items(), key=lambda x: x[1], reverse=True)[:count]
return res1
print(Sorted_by_IP('ips.txt'))
综合练习2
要求:
生成100个mac地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx
01-AF-3B-xx-xx-xx-xx
def creat_mac():
MAC= '01-AF-3B'
hex_num = string.hexdigits
for i in range(3):
n = random.sample(hex_num, 2)
sn = '_' + ''.join(n).upper()
MAC += sn
return MAC
def main():
with open('mac.txt', 'w') as f:
for i in range(100):
mac = creat_mac()
f.write(mac + '\n')
else:
exit()
if __name__ == '__main__':
main()
综合练习3
要求:
1,在当前目录新建目录img,里面包含100个文件,100个文件名个不相同(X4G5.png)
2,将当前目录所有以.png结尾的后缀名改为.jpg
def get_code(len=4): #生成随机码
code_str = string.ascii_letters + string.digits
code = ''
for i in range(len):
new_s = random.choice(code_str)
code += new_s
# print(code)
return ''.join(random.sample(code_str, len))
def Creat_dir(): #创建文件与目录
li = [get_code() for i in range(5)]
os.mkdir('img1')
for i in li:
os.mknod('img1/' + i +'.png')
else:
exit()
def moddify_suffix(dirname, old_suffix, new_suffix): #当前目录所有以.png结尾的后缀名改为.jpg
pngfile = filter(lambda filename: filename.endswith(old_suffix), os.listdir(dirname)) #过滤出png结尾的文件
basefiles = [os.path.splitext(filename)[0]for filename in pngfile] #分离出不带结尾的文件
for filename in basefiles:
oldname = os.path.join(dirname, filename + old_suffix)
newname = os.path.join(dirname, filename + new_suffix)
os.rename(oldname, newname) #重命名
moddify_suffix('img1','.png','.jpg') #调用函数