导出目录下所有图片文件 - Python脚本

4 篇文章 1 订阅
2 篇文章 0 订阅

App工程里面,往往包含了大量的图片文件,并散落在各种各样的子目录下。

当我们需要开发与App相对应的小程序、H5 应用时,就需要将图片全部导出。

手工复制显然是低效的,所以下面的 Python 脚本就可以帮到你啦!


代码如下:

# coding=utf-8

import os, sys, codecs, re, argparse, shutil

reload(sys)
sys.setdefaultencoding('utf-8') 

allImageFiles = set()

# 扫描所有图片,将路径存入数组,并执行图片导出操作
def scanAboundentImage(paths):
    def checkImageCallback(fullPath, filename, extension):
        global allImageFiles
        allImageFiles.add(fullPath)

    travel(paths, ['.png', '.jpg', 'jpeg'], checkImageCallback)
    copyImagesToNewPath()

# 扫描指定路径下,所有指定后缀的文件
def travel(paths, fileExtensions, callback):
    for path in paths:
        for dirpath, dirnames, filenames in os.walk(path):
            for filename in filenames:
                fullPath = os.path.join(dirpath, filename)
                (_, extension) = os.path.splitext(filename)
                if os.path.exists(fullPath) and extension in fileExtensions:
                    callback(fullPath, filename, extension)

# 导出所有图片至指定路径,并统计总图片大小
def copyImagesToNewPath():
    global allImageFiles
    totalSize = 0
    for aFile in allImageFiles:
        if os.path.exists(aFile):
            print('outputPath: %s' % outputPath[0])
            print('os.path.basename(aFile): %s' % os.path.basename(aFile))
            outputImgPath = outputPath[0] + '/' + os.path.basename(aFile)
            shutil.copyfile(aFile,outputImgPath)
            totalSize += os.path.getsize(aFile)

    print('all image count is %s \n' % (len(allImageFiles)))
    print('total size of image is %s KB \n' % (totalSize / 1024))

# 提取输入参数
def parseParams(arguments):
    parser = argparse.ArgumentParser(description='搜索、复制所有图片至指定目录')
    parser.add_argument('--sPath', nargs='+', help='搜索目录')
    parser.add_argument('--oPath', nargs='+', help='输出目录')
    
    args = parser.parse_args(arguments)
    return args

# main 函数。提取输入参数,并触发图片扫描
def main():
    global scanPath, outputPath
    
    arguments = parseParams(sys.argv[1:])
    scanPath = arguments.sPath
    outputPath = arguments.oPath
    scanAboundentImage(scanPath)

# 触发 main 函数
if __name__ == '__main__':
    main()



只需 copy 到一个文本文件中,后缀保存为 .py ,再调用以下指令即可:

python FILE_NAME.py --sPath IMAGE_SOURCE_PATH --oPath IMAGE_OUTPUT_PATH
* 下列参数需要替换为实际值:

  • FILE_NAME:文本文件名
  • IMAGE_SOURCE_PATH:包含图片的原目录
  • IMAGE_OUTPUT_PATH:导出图片的目标目录

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值