mercredi 27 novembre 2019

Placing randomly selected images into new folder

I have a directory that contains a large amount of sub directories.

Within each of these subdirectories are different jpegs, pngs.

I want to:

Select X amount of random images from these subdirectories

Create a new folder and copy these selected random images inside.

Thanks to help received here already I can print out a random selection of images using os.walk and random.choice.

import os
import random
import shutil


files_list = []
for root, dirs, files in os.walk("/Path/to/Directory"):
    for file in files:
        #all 
        if file.endswith(".jpg") or file.endswith(".png") or file.endswith(".jpeg"):
            files_list.append(os.path.join(root, file))


#print images
#lets me count and print the amount of jpeg,jpg,pmg 
file_count = len(files_list)
print file_count

print files_list   
print(random.sample(files_list, 2))  #prints two random files from list 

However, my issue is with actually selecting random images (not their names)

I have tried to create a variable imagePath that uses os.walk

#creates a variable imagePath that lets me access all img files in different folders
imagePath = os.walk("/Path/to/Directory") 

and a new variable to randomly select a single image from imagePath

#create a variable that lets me choose random iamge from imagePath
randomImages = random.choice(os.listdir(imagePath)) 

and then created a new directory and used shutil.copy to move radnomally selected image into this new directory

#creates a new directory 
os.mkdir('testDirectory')

#moves the randomly selected image into new directory 
shutil.copy(randomImages, testDirectory)

However, I am getting the following error:

Traceback (most recent call last):
  File "crawl.py", line 28, in <module>
    randomImages = random.choice(os.listdir(imagePath)) 
TypeError: coercing to Unicode: need string or buffer, generator found

Any suggestions would be great.




Aucun commentaire:

Enregistrer un commentaire