idfox2020 2022-05-13 16:01 采纳率: 100%
浏览 40
已结题

执行命令 调用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
  • 写回答

2条回答 默认 最新

  • hyh123a 全栈领域新星创作者 2022-05-13 16:17
    关注

    理解了 方便发下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)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月21日
  • 已采纳回答 5月13日
  • 修改了问题 5月13日
  • 创建了问题 5月13日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算