随机打印图像的代码错误

时间:2014-02-20 13:40:16

标签: python image random

对于特定体验,我需要经常捕捉图像(如时间流逝),我想不时将其中的一些发送到打印机。 因此,我们的想法是将图像从相机下载到文件夹(第一步)。然后要求代码随机选择其中一个图像,并随机经过一段时间将其发送到打印机(意味着不能立即)。(步骤2) 然后将图像发送到另一个文件夹,以避免打印两次。(步骤3) 我明白了吗?

嗯,我必须说我不太好,所以我的一个朋友帮忙。这是我们的代码,但目前它不起作用,我不明白为什么。 有人能让我们走上正轨吗?请。

import os
import sys
from random import shuffle, randint
import time
import shutil

def checkDirectory(path):
    listExt = ('.jpg', '.JPG')
    listFiles = os.listdir(path)
    listImages = []

    for f in listFiles:
        name, ext = os.path.splitext(f)
        if ext in listExt:
            myPath = os.path.join(path, f)
            listImages.append(myPath)

    return listImages

def printImage(imageFile):
    command = "lpr {}".format(imageFile)
    os.system(command)

def printImages(path, pathDst):
    listFiles = shuffle(checkDirectory(path))
    print(listFiles)
    if listFiles:
        for f in listFiles:
            t = randint(60, 180)
            time.sleep(t)
            printImage(f)
            shutil.move(f, pathDst)

printImages(r"/Users/Aym/Desktop/eden/", r"/Users/Aym/Desktop/eden2/")

1 个答案:

答案 0 :(得分:1)

random.shuffle用于更改list的顺序,而不是从中选择随机元素。

相反,请使用random.choice

import random

# ... 

def printImages(path, pathDst):
    image_files = checkDirectory(path)
    if image_files:
        t = randint(60, 180)
        time.sleep(t)
        image_for_print = random.choice(image_files)
        printImage(image_for_print)
        shutil.move(image_for_print, pathDst)

然后,您需要重复这一点,以便“不时”发送图像:

 while True:
     printImages(r"/Users/Aym/Desktop/eden/", r"/Users/Aym/Desktop/eden2/")