Python中文件相关的练习题(包含集合字典的常用操作方法)

# 名称: python-workspace
# 日期: 2020/12/27
# 用户: DELL
import random, math, string

"""
文件相关的练习
"""
# 1. 创建文件data.txt,从1-100顺序打印,共100行
with open('data.txt', 'w') as src_write:
    for i in range(1, 101):
        # print(f'i:{i}')
        src_write.writelines(f'{str(i)}\n')
# 创建文件data1.txt,共100行,每行存放一个1~100之间的整数
with open('data1.txt', 'w') as src_write:
    for i in range(1, 101):
        # (int(random.random()*100))
        # print(math.ceil(random.random() * 100))
        # print(random.randint(1, 100))
        src_write.writelines(f'{random.randint(1, 100)}\n')
"""
 3. 生成100个MAC地址并写入data2.txt文件中,MAC地址前6位(16进制)为01-AF-3B
-xx
01-AF-3B-xx
-xx
01-AF-3B-xx-xx
-xx
01-AF-3B-xx-xx-xx
"""


# 生成一个mac地址
def getOneMac():
    mac = '01-AF-38'
    mac_str = ''
    for i in range(1, 4):
        # print(string.hexdigits):打印16进制数
        # n = random.sample(string.hexdigits, 2) # 返回一个列表
        # print(''.join(n).upper())
        mac_str += '-' + ''.join(random.sample(string.hexdigits, 2)).upper()
    return mac + mac_str


with open('data2.txt', 'w') as src_write:
    for i in range(1, 101):
        src_write.writelines(f"{i}. " + getOneMac() + "\n")

"""
生成一个大文件ips.txt,要求1200行,每行随机为172.25.254.0/24段的ip
读取ips.txt文件统计这个文件中ip出现频率排前10的ip
"""
with open('ips.txt', 'w') as src_write:
    # 获取到100个ip
    random_num = ['172.25.254.' + str(random.randint(1, 255)) for i in range(1, 101)]
    # ip为key,重复的个数为value形成字典
    ips_dicts = {'{}'.format(i): random_num.count(i) for i in random_num}
    # 对字典中value进行降序排序,返回集合元组,注意如果是为key排序则key=lambda b: b[0]
    ips_lis = sorted(ips_dicts.items(), key=lambda b: b[1], reverse=True)
    for i in ips_lis:
        # 打印集合中元组的每一项
        print('IP:{0} 总数:{1}'.format(i[0], i[1]))
        # 写入到文件中
        src_write.writelines('IP:{0} 总数:{1}\n'.format(i[0], i[1]))
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值