python操作系统os练习题(京东二面笔试题和生成MAC地址)

京东二面笔试题

  1. 生成一个大文件ips.txt,要求1200行,
    每行随机为172.25.254.0/24段的ip;
  2. 读取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()
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值