对于特定体验,我需要经常捕捉图像(如时间流逝),我想不时将其中的一些发送到打印机。 因此,我们的想法是将图像从相机下载到文件夹(第一步)。然后要求代码随机选择其中一个图像,并随机经过一段时间将其发送到打印机(意味着不能立即)。(步骤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/")
答案 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/")