执行命令 调用Excel或其他表格 的数据 进行拷贝 拷贝完一组照片 再调用下一组数据 继续完成拷贝任务

现在已经能完成 从A文件夹 随机抽取(指定数量)6张照片 复制到B文件夹并重命名为 XX图片+(1)+(2)……
问题: 我需要做300组不同的设置 这样一段接一段 我后面这个文件会非常长
能不能做一个Excel文件 让他调用

img


这4个数据去执行,
并要求只有前面执行文件拷贝图片已经完成拷贝,才开始调用下一组数据继续执行(或设置间隔多少秒执行下一个数据)

img

# 执行拷贝图片的脚本 ----------------------------------------------------
import os
from shutil import copy
import random
if __name__ == '__main__':
    NUM = 5                                                      # 随机抽取数量
    PATH = "G:\A客户样片\室内白纱\\"             # 随机抽取 客户照片
    PATH2 = "G:\B客户模板\模板A001\\"          # 拷贝 到 公司模板
    PATH3 ='室内 ({}).jpg'                                 # 重命名 文件名
    data = os.listdir(PATH)
    print("客户图片数量:%d" % len(data))
    # 随机抽取客户照片
    val_extr_img = random.sample(data, NUM)
    print(val_extr_img)
    idx = 1
    for f in val_extr_img:
        src = os.path.join(PATH, f)
        data.remove(f)
        copy(src, PATH2)
        print(PATH2 + f,PATH2 + PATH3.format(idx)) 
        os.rename(PATH2 + f,PATH2 + PATH3.format(idx))
        idx += 1

理解了 方便发下excel的模板吗

  • 输入文件为:

01.xlsx

  • 代码如下:
import os
import time
from shutil import copy
import random
import pandas as pd


def func(NUM, PATH, PATH2, PATH3):
    data = os.listdir(PATH)
    print("客户图片数量:%d" % len(data))
    # 随机抽取客户照片
    val_extr_img = random.sample(data, NUM)
    print(val_extr_img)
    idx = 1
    for f in val_extr_img:
        src = os.path.join(PATH, f)
        data.remove(f)
        copy(src, PATH2)
        print(PATH2 + f, PATH2 + PATH3.format(idx))
        os.rename(PATH2 + f, PATH2 + PATH3.format(idx))
        idx += 1


if __name__ == '__main__':
    input_excel = "01.xlsx"
    sleep_time = 10  # 秒为单位
    df = pd.read_excel(input_excel, index_col=0)
    row_len = df.shape[0]
    for i in range(1, row_len):
        print("###########################")
        print("这是第{i}行".format(i=i))
        try:
            num = df.iloc[i, 0]
            print("num", df.iloc[i, 0])
        except Exception as e:
            print("结束")
            break
        path1 = df.iloc[i, 1]
        path2 = df.iloc[i, 2]
        path3 = df.iloc[i, 3]
        print(num, path1, path2, path3)
        func(num, path1, path2, path3)
        time.sleep(sleep_time)

建议用文本保存配置,方便快捷,如下:


```bash
#! /usr/bin/env python
# -*- coding: utf-8 -*-

import configparser

config_file = "pic_config.ini"

def read_config():
    '''
    读取配置文件
    :return:
    '''
    # 生成conf对象
    conf = configparser.ConfigParser()
    # 载入配置文件
    conf.read(config_file)

    for i in range(0,10):
        sec="pic{}".format(i)
        if not conf.has_section(sec):
            conf.add_section(sec)
        num = conf.get(sec, "num")
        path1 = conf.get(sec, "path1")
        path2 = conf.get(sec, "path2")
        path3 = conf.get(sec, "path3")
        print("item {}: num:{}, path1{}, path2{}, path3{}".format(sec,num,path1,path2,path3))

def write_config():
    '''
    记录参数配置文件
    :return:
    '''
    # 生成conf对象
    conf = configparser.ConfigParser()

    for i in range(0,10):
        sec="pic{}".format(i)
        conf.add_section(sec)
        conf.set(sec, "num", "6")
        conf.set(sec, "path1", "xxxxx")
        conf.set(sec, "path2", "xxxxx")
        conf.set(sec, "path3", "xxxxx")

    with open(config_file, "w") as fp:
        conf.write(fp)

if __name__ == '__main__':
    write_config()
    read_config()


img


生成的文本,还可以手动修改内容,想怎么配置就怎么配置