Python3-os模块对目录操作

对目录的操作

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')  #调用函数
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值