Im relatively new in python. I've wrote my "first" script to do some staff for me. I am creating Image dataset for Mashine Lerning. In Photoshop, I select the area I need in the large image and using the Photoshop script I save the selected area to a folder tree_checker
. I have different scripts configured in Photoshop, each script saves a file with a specific name. This script takes every new file in directory and moves it in depending directory.
"""
This script provides automatically file ordering.
"""
import os
import time
def get_dir_length(path):
"""
Returns the length of given directory e.g the amount of files inside the folder.
"""
return len([f for f in os.listdir(path)if os.path.isfile(os.path.join(path, f))])
ORC_MALE = 'orc_male.jpg'
ORC_MALE_MAG = 'orc_male_mag.jpg'
ORC_FEMALE = 'orc_female.jpg'
DARKELF_MALE = 'darkelf_male.jpg'
DARKELF_FEMALE = 'darkelf_female.jpg'
HUMAN_MALE = 'human_male.jpg'
HUMAN_MALE_MAG = 'human_male_mag.jpg'
HUMAN_FEMALE = 'human_female.jpg'
ELF_MALE = 'elf_male.jpg'
ELF_FEMALE = 'elf_female.jpg'
DWARF_MALE = 'dwarf_male.jpg'
DWARF_FEMALE = 'dwarf_female.jpg'
PATH_TO_WATCH = './tf_models/tree_checker/'
BEFORE = dict([(f, None) for f in os.listdir(PATH_TO_WATCH)])
COUNT_AMOUNT_OF_FILE_MOVE = 0
try:
while 1:
time.sleep(1)
AFTER = dict([(f, None) for f in os.listdir(PATH_TO_WATCH)])
ADDED = [f for f in AFTER if not f in BEFORE]
REMOVED = [f for f in BEFORE if not f in AFTER]
if ADDED:
if ''.join(ADDED) == ORC_MALE:
DIR_LEN = get_dir_length('./tf_models/orc_male/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/orc_male/orc_male_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/orc_male/orc_male_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == ORC_MALE_MAG:
DIR_LEN = get_dir_length('./tf_models/orc_male_mag/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/orc_male_mag/orc_male_mag_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/orc_male_mag/orc_male_mag_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == ORC_FEMALE:
DIR_LEN = get_dir_length('./tf_models/orc_female/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/orc_female/orc_male_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/orc_female/orc_male_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == DARKELF_MALE:
DIR_LEN = get_dir_length('./tf_models/darkelf_male/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/darkelf_male/darkelf_male_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/darkelf_male/darkelf_male_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == DARKELF_FEMALE:
DIR_LEN = get_dir_length('./tf_models/darkelf_female/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/darkelf_female/darkelf_female_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/darkelf_female/darkelf_female_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == HUMAN_MALE:
DIR_LEN = get_dir_length('./tf_models/human_male/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/human_male/human_male_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/human_male/human_male_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == HUMAN_MALE_MAG:
DIR_LEN = get_dir_length('./tf_models/human_male_mag/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/human_male_mag/human_male_mag_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/human_male_mag/human_male_mag_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == HUMAN_FEMALE:
DIR_LEN = get_dir_length('./tf_models/human_female/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/human_female/human_female_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/human_female/human_female_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == ELF_MALE:
DIR_LEN = get_dir_length('./tf_models/elf_male/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/elf_male/elf_male_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/elf_male/elf_male_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == ELF_FEMALE:
DIR_LEN = get_dir_length('./tf_models/elf_female/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/elf_female/elf_female_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/elf_female/elf_female_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == DWARF_MALE:
DIR_LEN = get_dir_length('./tf_models/dwarf_male/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/dwarf_male/dwarf_male_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/dwarf_male/dwarf_male_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
if ''.join(ADDED) == DWARF_FEMALE:
DIR_LEN = get_dir_length('./tf_models/dwarf_female/')
try:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/dwarf_female/dwarf_female_' + str(DIR_LEN+1) + '.jpg'))
except FileExistsError:
os.rename((PATH_TO_WATCH + ''.join(ADDED)), \
('./tf_models/dwarf_female/dwarf_female_' + str(DIR_LEN+1) + 'a.jpg'))
COUNT_AMOUNT_OF_FILE_MOVE += 1
BEFORE = AFTER
if (COUNT_AMOUNT_OF_FILE_MOVE % 10 == 0 and COUNT_AMOUNT_OF_FILE_MOVE > 0):
print('Currently moved ' + str(COUNT_AMOUNT_OF_FILE_MOVE) + \
' files. - ' + str(time.clock))
except KeyboardInterrupt:
print(COUNT_AMOUNT_OF_FILE_MOVE)
Some of place wich could be refactored is
"using a dictionary comprehension"
as my pylint says. But I don't know how to du that. Also Pylint says that is will be faster if I do refactor here.
consider-using-dict-comprehension (R1717): Consider using a dictionary comprehension Although there is nothing syntactically wrong with this code, it is hard to read and can be simplified to a dict comprehension.Also it is faster since you don't need to create another transient list
What does this code do?
Folders tree:
Project
|-elf_male
|-elf_female
|-darkelf_male
|-darkelf_female
|-dwarf_male
|-dwarf_female
|-human_male
|-human_male_mag
|-human_female
|-orc_male
|-orc_male_mag
|-orc_female
`-tree_checker
In general this script continuously watching if there is a new image in folder tree_checker
as soon as there is new image (images in this folder you have to put manually) script checks the name of the image (e.g orc_male.jpg
, orc_male_mag.jpg
, orc_female.jpg
etc) and moves the image to the folder according to the name of the image.
This script is actually quite slow. If you too quickly insert few images into the tree_checker
folder, it breaks.
time.sleep(1)
which is not much point in performance testing. \$\endgroup\$