京东二面笔试题
- 生成一个大文件ips.txt,要求1200行,
每行随机为172.25.254.0/24段的ip;- 读取ips.txt文件统计这个文件中ip出现频率排前10的ip;
第一种方法:
from collections import Iterable
import random
def create_ip_file(filename):
ip =['172.25.254.' + str(i) for i in range(0,255)]
print(random.sample(ip,1))
# print(ip)
with open(filename,'a+') as f:
for count in range(1200):
f.write(random.sample(ip,1)[0] + '\n')
# create_ip_file('ips.txt')
def sorted_by_ip(filename,count=10):
ips_dict = dict()
with open(filename) as f:
for ip in f:
if ip in ips_dict:
ips_dict[ip] += 1
else:
ips_dict[ip] = 1
sorted_ip = sorted(ips_dict.items(),key=lambda x:x[1],reverse=True)[:count]
return sorted_ip
print(sorted_by_ip('ips.txt'))
第二种方法:
import os
from os.path import join
for root,dir,files in os.walk('/var/log'):
# print(root)
# print(files)
for name in files:
print(join(root,name))
from collections import Iterable
f = open('/tmp/passwd')
# print(isinstance(f,Iterable))
for i,item in enumerate(f):
if i == 10:
break
print(i,item)
生成MAC地址
生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B
01-AF-3B
01-AF-3B-xx
01-AF-3B-xx-xx
01-AF-3B-xx-xx-xx
import string
import random
# print(string.hexdigits)
def creat_mac():
MAC= '01-AF-3B'
# 生成16进制的数
hex_num = string.hexdigits
for i in range(3):
# 从16进制字符串中随机选出两个数字来(返回值是列表)
n = random.sample(hex_num,2)
# 拼接列表中的内容,将小写字母转换成大写
sn ='-' + ''.join(n).upper()
MAC += sn
return MAC
# 主函数:随机生成100个MAC地址
def main():
# 以写的方式打开文件
with open('mac.txt','w') as f:
for i in range(100):
mac = creat_mac()
print(mac)
# 每生成一个MAC地址,存入文件
f.write(mac + '\n')
main()