python中os模块的使用(反馈系统信息,目录、文件)

1.反馈的系统类型

反馈信息是posix:linux操作系统
反馈信息是nt:windows操作系统

2.系统详细信息

import os
print(os.name)  查看操作系统的
打印结果
posix

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.判断文件是否为绝对路径
只能判断是否为绝对路径,不能判断该路径下的目录或文件是否真实存在

import os
print(os.path.isabs('/wenjian/westos'))   westos文件实际不存在
打印结果
True
print(os.path.isabs('westos'))   不以绝对路径开头
False

4.生成绝对路径

生成绝对路径
import os
print(os.path.abspath('redhat.jpg'))
打印结果
/root/PycharmProjects/item1/redhat.jpg

指定路径自动拼接
import os
print(os.path.join('/home/root','readhat.jpg'))
打印结果
/home/root/readhat.jpg

点表示当前路径
import os
print(os.path.join(os.path.abspath('.'),'readhat.jpg'))
打印结果
/root/PycharmProjects/item1/readhat.jpg

5.获取目录或者文件名称

import os
filename = '/root/PycharmProjects/item1/readhat.jpg'
print(os.path.basename(filename))  文件名
print(os.path.dirname(filename))    目录名
打印结果
readhat.jpg   文件名
/root/PycharmProjects/item1   目录名

6.创建目录
在这里插入图片描述
在这里插入图片描述

7.删除目录
只能删除空目录

import os
# os.mkdir('westos')  创建空目录
os.rmdir('westos')   删除目录

在这里插入图片描述
8.创建文件
在这里插入图片描述
8.1删除文件

import os
os.remove('python')

9.文件的重命名
在这里插入图片描述
10.判断文件或目录是否存在

import os
print(os.path.exists('img'))
print(os.path.exists('linux'))
打印结果
False不存在
True存在

11.分离目录名和文件名

分离文件名和后缀,不会判断文件是否存在
import os
print(os.path.splitext('hello.yml'))  
打印结果
('hello', '.yml')

import os
print(os.path.split('/root/PycharmProjects/item1/readhat.jpg'))  分离目录和文件名
打印结果
('/root/PycharmProjects/item1', 'readhat.jpg')
由于权限有些目录普通用户无法查看
import os
for root,dir,files in os.walk('/var/log'):
    print(root)   路径
    print(dir)    目录名称
    print(files)    文件名称
打印结果

在这里插入图片描述

import os
from os.path import join
for root,dir,files in os.walk('/var/log'):
    for name in files:
        print(join(root,name)) 把路径和名称拼接在一起
 打印结果

在这里插入图片描述
京东二面笔试题
#1. 生成一个大文件ips.txt,要求1200行, 每行随机为172.25.254.0/24段
的ip;
2. 读取ips.txt文件统计这个文件中ip出现频率排前10的ip;

# 生成1200行ip
def create_ip_file(filename):   
    ip = ['172.25.254.' + str(i) for i in range(1,255)]
    #print(random.sample(ip,1))
    with open(filename,'a+') as f:
        for i in range(1200):
            f.write(random.sample(ip,1)[0] + '\n')
create_ip_file('ips.txt')
# 统计出现总数前十的ip
def sorted_by_ip(filename,count=10):
    ips_dict = dict()
    with open(filename) as f:
        for ip in f:
            ip = ip.strip()
            if ip in ips_dict:  
                ips_dict[ip] += 1    存在自加1
            else:
                ips_dict[ip] = 1   不存在=1
    sorted_ip = sorted(ips_dict.items(),key=lambda x:x[1],reverse=True)[:count]
    return sorted_ip
print(sorted_by_ip('ips.txt'))
打印结果
[('172.25.254.100', 35), ('172.25.254.225', 35), ('172.25.254.71', 29), ('172.25.254.80', 29),
 ('172.25.254.66', 29), ('172.25.254.112', 28), 
 ('172.25.254.101', 28), ('172.25.254.142', 28), ('172.25.254.110', 28), ('172.25.254.72', 28)]

练习:

  1. 在当前目录新建目录img, 里面包含100个文件, 100个文件名各不>相同(X4G5.png)
  2. 将当前img目录所有以.png结尾的后缀名改为.jpg.
import random
import os
import string
def gen_code(len=4):
# 随机生存4位验证码
# random.sample返回一个新列表,新列表存放随机所产生的4位验证码
    li = random.sample(string.ascii_letters+string.digits,len)
    # 拼接为字符串
    return '.'.join(li)
def create_files():
    # 随即生成100个验证码文件
    li = [gen_code() for i in range(100)]
    os.mkdir('img')
    for i in li:
        os.mknod('img/' + i + '.png')
# create_files()
# 已经生成100个文件

def modify_suffix(dirname,old_suffix,new_suffix):
# 查看找,.png结尾的文件并改为.jpg
    pngfile =  filter(lambda filename: filename.endswith(old_suffix),os.listdir(dirname))
    # 分离文件名称和后缀
    basefile = [os.path.splitext(filename)[0] for filename in pngfile]
    # 文件重命名
    for filename in basefile:
        oldname = os.path.join(dirname,filename + old_suffix)
        newname = os.path.join(dirname,filename + new_suffix)
        os.rename(oldname,newname)
        print('%s重命名%s成功' %(oldname,newname))
modify_suffix('img','.png','.jpg')

在这里插入图片描述
在这里插入图片描述

生成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 random
import string   string模块中包含所有数字,字母
def create_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:  使用with写入文件中
        for i in range(100):    循环遍历100
            mac = create_mac()    
            print(mac)
            f.write(mac + '\n')   换行

main()  调用主函数

查看
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值