os.mkdir error- system cannot find the specified path

RShah picture RShah · Sep 27, 2016 · Viewed 14k times · Source

I am trying to create new folders using dictionary keys. The code is:

os.mkdir("Y:\\Bleeding-study\\MIMIC\\Notes\\randombins\\")

for key in index:
    os.mkdir("Y:\\Bleeding-study\\MIMIC\\Notes\\randombins\\batch_%s\\"%str(key))
    os.mkdir("Y:\\Bleeding-study\\MIMIC\\Notes\\randombins\\batch_%s\\%s\\"%(str(key),"config"))
    os.mkdir("Y:\\Bleeding-study\\MIMIC\\Notes\\randombins\\batch_%s\\corpus\\"%str(key))

The error is:
WindowsError: [Error 3] The system cannot find the path specified: 'Y:\\Bleeding-study\\MIMIC\\Notes\\randombins\\batch_0\\'

I thought this code would create that file pathname, so why is it giving this error?

Answer

SiHa picture SiHa · Sep 27, 2016

Your error is because you are trying to create multiple levels of directory in one step. os.mkdir() will only create a single level of directory, so this line fails:

os.mkdir("Y:\\Bleeding-study\\MIMIC\\Notes\\randombins\\batch_%s\\"%str(key)) because you have not yet created the batch_0 directory.

os.makedirs() is what you need here:

Recursive directory creation function. Like mkdir(), but makes all intermediate-level directories needed to contain the leaf directory.
...

...and in fact if you use this, then you can do away with the initial os.mkdir(), as it will be redundant.