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:导出图片的目标目录