[Tutor] Move files to a new directory with matching folder names

Steven D'Aprano steve at pearwood.info
Thu May 22 03:11:27 CEST 2014


On Thu, May 22, 2014 at 10:25:27AM +1000, questions anon wrote:
> I have files contained separately in folders labelled by years and months
> and I would like to copy them into another directory where they have
> matching folder names of years and months.
> I can do this for one folder at a time (see below) but I want it to be able
> to go through all the folders (2002/01,2002/02.....2012/11,2012/12) and
> copy files from one directory to another directory with matching subdir
> names.

You need a loop.

Currently you do something like this:


source="/Data/allclimatedata/2002/01"
destination="/Data/rainfall/2002/01"
copy files from source to destination


The dumb way would be to manually list out every pair of directories:


source="/Data/allclimatedata/2002/01"
destination="/Data/rainfall/2002/01"
copy files from source to destination
source="/Data/allclimatedata/2002/02"
destination="/Data/rainfall/2002/02"
copy files from source to destination
... and so on, for 12 months per year and however many years you need



The smart way is to get Python to do the work for you:


source_prefix = "/Data/allclimatedata"
destination_prefix = "/Data/rainfall"
for year in range(2002, 2013):
    year = str(year)
    for month in range(1, 13):
        # convert to a string with leading 0 if needed
        month = "%02d" % month
        source = os.path.join(source_prefix, year, month)
        destination = os.path.join(destination_prefix, year, month)
        copy files from source to destination




-- 
Steven


More information about the Tutor mailing list