Python文件操作的轮子

轮子1 创建与源目录相同的目录

def create_dir(source, target):
    """
    创建与源目录相同的目录
    :param source:
    :param target:
    :return:
    """

    dir_list = find_dir(source)
    for p in dir_list:
        fdir = p.replace(source, target)
        if not os.path.exists(fdir):
            os.makedirs(fdir)

轮子2:寻找非空目录

def find_dir(filepath):
    """
    寻找非空目录
    :param filepath: 根目录
    :return:非空目录
    """
    dir_list = list()
    files = os.listdir(filepath)
    for fi in files:
        fi_d = os.path.join(filepath, fi)
        if os.path.isdir(fi_d):
            dir_list.extend(find_dir(fi_d))
        else:
            continue
    if not dir_list and files:  # 只记录非空目录
        dir_list.append(filepath)
    return dir_list

轮子3 获取指定路径下的所有图片

def get_images(filepath):
    """
    获取指定路径下的所有图片
    :param filepath: 指定路径
    :return: 所有图片的路径列表
    """
    dir_list = list()
    files = os.listdir(filepath)
    for f in files:
        fdir = os.path.join(filepath, f)
        if os.path.isdir(fdir):
            dir_list.extend(get_images(fdir))
        elif fdir.endswith('.png') or fdir.endswith('.jpg') or fdir.endswith('.gif') or fdir.endswith('.JPG') or \
                fdir.endswith('.PNG') or fdir.endswith('.GIF') or fdir.endswith('.jpeg') or fdir.endswith('.JPEG'):
            dir_list.append(fdir)
    return dir_list

轮子4 获取指定后缀文件

(1)递归查找

def get_files(filepath, suffix):
    """
    获取指定后缀文件
    :param filepath: 指定文件夹
    :param suffix: 指定后缀
    :return: 指定后缀文件路径
    """
    dir_list = list()
    files = os.listdir(filepath)
    for f in files:
        fdir = os.path.join(filepath, f)
        if os.path.isdir(fdir):
            dir_list.extend(get_files(fdir))
        elif fdir.endswith(suffix):
            dir_list.append(fdir)
    return dir_list

(2)使用glob模块

import glob
glob.glob("/home/project/data/*.doc")

或者:

import Path

dir_path = Path('/home/project/data/')
text_list = dir_path.glob('**/*.doc')

轮子5 获取指定路径下文件的大小

def get_file_size(path):
 	"""
    获取指定路径下文件的大小
    """
    # 字节bytes转化kb\m\g
    def formatsize(bytes):
        try:
            bytes = float(bytes)
            kb = bytes / 1024
            return kb
        except:
            print("传入的字节格式不对")
            return "Error"
        # if kb >= 1024:
        #     M = kb / 1024
        #     if M >= 1024:
        #         G = M / 1024
        #         return "%fG" % (G)
        #     else:
        #         return "%fM" % (M)
        # else:
        #     return "%fkb" % (kb)
    s = os.path.getsize(path)
    return formatsize(s)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值