Recursive Folder Copying on Windows

Last week, I had a rather simple task – copy a user-folder from an old laptop to a new laptop – preserve folder structure and keep all metadata (such as file-creation date, last edited etc.).
Right-click copy and paste does not fullfill the needs and usually is rather slow, so I tried to use Windows‘ built-in robocopy.

Doing a quick read over the documentation, I came up with

robocopy C:\SRCDIR D:\DSTDIR /e /dcopy:dat

which I thought would do, what I want – it should copy all files recursively and preserve file attributes and timestamps.

I started the process and expected it to be done after a few minutes – however, the process ran and ran.
The destination directory grew in size, way beyond what it should – according to the size of the source directory.

This prompted me to stop the process and investigate – the source folder was around 5GB, while the destination folder already was over 60GB – what happened?


Saving 3D Tiff stacks in Python

Reading and writing image data is a recurring task, and I was wondering, why reading and writing image sequences that are saved in one single *.tiff file are not a standard function in the imaging libraries I regularly use (such as OpenCV, libtiff, Pillow etc.).

Reading 3D tiff files is easy, e.g. with OpenCV

import cv2

res_tuple = cv2.imreadmulti(path_to_file, flags = cv2.IMREAD_UNCHANGED)

will do the job. However, when trying to save the resulting array back to a file, it will fail. A working filesave for 3D tiff stacks could e.g. look like this:

from skimage.external import tifffile as tif
import numpy as np

image = np.ones((100,10,10), dtype=np.uint16)
tif.imsave('test.tif', image)

Of course the tifffile library will do that as well, however, I find it more convenient to have only scikit-image installed and let it call the tifffile as external library.

Getting Started with Python + Anaconda + Spyder

In the last few years I have done quite some programming work with Python and started to love both the Anaconda distribution (I might do another blog-post on that topic) and the Spyder IDE. If you are very new to Python and programming, this might be a little overkill, but it will be a very clean basis to start with and no drama, once there is the need to update or upgrade. So follow these steps if you want to get a first quick-start into Python with using the Spyder IDE and Anaconda.


How to get external DLLs into a python package

So, I recently stumbled upon the problem of having to include an external DLL into a python package, which should also work when turned into a windows executable by pyinstaller. This post, is meant to be a help if you run into the same problems I was having (and of course as my personal prosthetic knowledge).

The structure of this post will be: