-
DebuggingImage Processing
Description Through experience I found that hardcoding in file names/ destinations/ quantities, etc. always lead to unknown bugs later on.
So I would really prefer having the folder source and destination as a variable/parameter.
Code import os, shutil class MoveFiles: def __init__(self): self.imageFolder = "folderA" self.images = [img for img in os.listdir(self.imageFolder) if img.endswith(('.png', '.jpg', '.jpeg'))] def move_image_files(self, source = "folderA", destination = "folderB"): for img in self.images: shutil.move(os.path.join(source, img), os.path.join(destination, img))
Preloaded Code from PIL import Image, ImageDraw import os def create_image_files(): """Create 3 .PNG, 3 .JPG, and 1 image test files""" if not os.path.exists('folderA'): os.mkdir('folderA') if not os.path.exists('folderB'): os.mkdir('folderB') for n in range(1, 3 + 1): png_img = Image.new('RGB', size=(76, 33), color=(177, 54, 30)) t = ImageDraw.Draw(png_img) t.text((6, 10), f'codewarz-{n}', fill=(0, 0, 0)) png_img.save(os.path.join('folderA', f'codewarz-{n}.png')) for n in range(1, 3 + 1): jpg_img = Image.new('RGB', size=(76, 33), color=(177, 54, 30)) t = ImageDraw.Draw(jpg_img) t.text((6, 10), f'codewarz-{n}', fill=(0, 0, 0)) jpg_img.save(os.path.join('folderA', f'codewarz-{n}.jpg')) jpeg_img = Image.new('RGB', size=(100, 52), color=(177, 54, 30)) t = ImageDraw.Draw(jpeg_img) t.text((10, 20), f'codewarz-776', fill=(0, 0, 0)) jpeg_img.save(os.path.join('folderA', f'codewarz-776.jpeg')) def create_text_files(): """This function generates 5 text files""" for n in range(1, 5 + 1): with open(os.path.join('folderA', f'codewarz-{n}.txt'), 'w') as fo: fo.write('codewarz!') def delete_test_files(): """This function deletes test files in folderA and folderB""" for file in os.listdir('folderA'): os.remove(os.path.join('folderA', file)) for file in os.listdir('folderB'): os.remove(os.path.join('folderB', file)) os.rmdir('folderB') create_image_files() create_text_files()
Test Cases import codewars_test as test from solution import MoveFiles, delete_test_files import os .describe("Example") def test_group(): .it("test case 1: File quantity") def test_case(): MoveFiles().move_image_files() t1 = len(os.listdir('folderA')) t2 = len(os.listdir('folderB')) test.assert_equals(t1, 5) test.assert_equals(t2, 7) .it("test case 2: Check file type") def test_case(): MoveFiles().move_image_files() t1 = len([img for img in os.listdir('folderA') if img.endswith(('.png', '.jpg', '.jpeg'))]) t2 = len([img for img in os.listdir('folderB') if img.endswith(('.png', '.jpg', '.jpeg'))]) t3 = len([img for img in os.listdir('folderA') if img.endswith('.txt')]) t4 = len([img for img in os.listdir('folderB') if img.endswith('.txt')]) test.assert_equals(t1, 0) test.assert_equals(t2, 7) test.assert_equals(t3, 5) test.assert_equals(t4, 0) delete_test_files()
Output:
-
Code - import os, shutil
- class MoveFiles:
def __init__(self):self.images = [img for img in os.listdir('folderA') if img.endswith(('.png', '.jpg', '.jpeg'))]- def __init__(self):
- self.imageFolder = "folderA"
- self.images = [img for img in os.listdir(self.imageFolder) if img.endswith(('.png', '.jpg', '.jpeg'))]
def move_image_files(self):- def move_image_files(self, source = "folderA", destination = "folderB"):
- for img in self.images:
shutil.move(os.path.join('folderA', img), os.path.join('folderB', img))- shutil.move(os.path.join(source, img), os.path.join(destination, img))
- All
- {{group.name}} ({{group.count}})
This comment has been reported as {{ abuseKindText }}.
Show
This comment has been hidden. You can view it now .
This comment can not be viewed.
- |
- Reply
- Edit
- View Solution
- Expand 1 Reply Expand {{ comments?.length }} replies
- Collapse
- Remove
- Remove comment & replies
- Report
{{ fetchSolutionsError }}