Skip to content

Commit 183e423

Browse files
committed
Delete empty directory, but only current one
1 parent ddf64eb commit 183e423

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

phockup.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ def handle_file(source_file, outputdir, dir_format, move_files, date_regex=None)
250250
else:
251251
if move_files:
252252
shutil.move(source_file, target_file)
253+
delete_empty_dir(os.path.dirname(source_file))
253254
else:
254255
shutil.copy2(source_file, target_file)
255256

@@ -284,10 +285,17 @@ def handle_file_xmp(source_file, photo_name, suffix, exif_output_dir, move_files
284285

285286
if move_files:
286287
shutil.move(xmp_original, xmp_path)
288+
delete_empty_dir(os.path.dirname(xmp_original))
287289
else:
288290
shutil.copy2(xmp_original, xmp_path)
289291

290292

293+
def delete_empty_dir(dir):
294+
files = os.listdir(dir)
295+
if len(files) == 0:
296+
os.rmdir(dir)
297+
298+
291299
def sha256_checksum(filename, block_size=65536):
292300
sha256 = hashlib.sha256()
293301
with open(filename, 'rb') as f:

tests.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,24 @@ def test_handle_move():
192192
assert os.path.isfile(os.path.join(dir_name, "unknown/in_move.txt.xmp"))
193193

194194

195+
def test_handle_move_removes_empty_dirs():
196+
tempdir = tempfile.mkdtemp(suffix='first')
197+
firstnesteddir = os.path.join(tempdir, 'one')
198+
nesteddir = os.path.join(firstnesteddir, 'two', 'three')
199+
os.makedirs(nesteddir, exist_ok=True)
200+
201+
open(os.path.join(nesteddir, "move.txt"), "w").close()
202+
203+
handle_file(os.path.join(nesteddir, "move.txt"), tempdir, "%Y/%m/%d", True)
204+
205+
assert not os.path.isfile(os.path.join(nesteddir, "move.txt"))
206+
207+
assert os.path.isfile(os.path.join(tempdir, "unknown/move.txt"))
208+
209+
# shutil.rmtree(tempdir)
210+
assert not os.path.isdir(firstnesteddir)
211+
212+
195213
def test_handle_exists_same(capsys):
196214
with tempfile.TemporaryDirectory("phockup") as dir_name:
197215
output_dir = os.path.join(dir_name, "unknown")

0 commit comments

Comments
 (0)