374

I want to put output information of my program to a folder. if given folder does not exist, then the program should create a new folder with folder name as given in the program. Is this possible? If yes, please let me know how.

Suppose I have given folder path like "C:\Program Files\alex" and alex folder doesn't exist then program should create alex folder and should put output information in the alex folder.

1
  • 10
    When you looked in the os module, what did you find? Anything useful? What code did you try? Anything? Commented Aug 13, 2009 at 20:35

3 Answers 3

595

You can create a folder with os.makedirs()
and use os.path.exists() to see if it already exists:

newpath = r'C:\Program Files\arbitrary' 
if not os.path.exists(newpath):
    os.makedirs(newpath)

If you're trying to make an installer: Windows Installer does a lot of work for you.

Sign up to request clarification or add additional context in comments.

9 Comments

This will fail because you haven't double-backslashes in the call to os.makedirs.
It's killing me: newpath = r'C:\Program Files\alex'; if not os.path.exists(newpath): os.makedirs(newpath)
do os.path.join('dir','other-dir') instead of dir\other-dir if you want to be compatible with stuff besides windows.
Could someone explain why os.path.join('dir','other-dir') would be more compatible with other systems? Because of slashes/backslashes?
Because os.path functions use the local rules of the python installation running the script for path strings. Using os.path.join in all cases assures that your paths will be formed correctly for the platform the script is being run on.
|
81

Have you tried os.mkdir?

You might also try this little code snippet:

mypath = ...
if not os.path.isdir(mypath):
   os.makedirs(mypath)

makedirs creates multiple levels of directories, if needed.

Comments

55

You probably want os.makedirs as it will create intermediate directories as well, if needed.

import os

#dir is not keyword
def makemydir(whatever):
  try:
    os.makedirs(whatever)
  except OSError:
    pass
  # let exception propagate if we just can't
  # cd into the specified directory
  os.chdir(whatever)

2 Comments

whatever is a path?
@mLstudent33 Yes as string. I would suggest at least logging the error or a print statement so we know there is something wrong.