How to create new folder?

538,321

Solution 1

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.

Solution 2

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.

Solution 3

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)
Share:
538,321

Related videos on Youtube

Double AA
Author by

Double AA

Updated on September 26, 2020

Comments

  • Double AA
    Double AA almost 4 years

    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.

    • user1066101
      user1066101 almost 15 years
      When you looked in the os module, what did you find? Anything useful? What code did you try? Anything?
  • Wayne Koorts
    Wayne Koorts almost 15 years
    This will fail because you haven't double-backslashes in the call to os.makedirs.
  • hughdbrown
    hughdbrown almost 15 years
    It's killing me: newpath = r'C:\Program Files\alex'; if not os.path.exists(newpath): os.makedirs(newpath)
  • SilentGhost
    SilentGhost almost 15 years
    generally speaking pathnames are case-sensitive.
  • QxQ
    QxQ about 11 years
    do os.path.join('dir','other-dir') instead of dir\other-dir if you want to be compatible with stuff besides windows.
  • Ando Jurai
    Ando Jurai about 7 years
    Could someone explain why os.path.join('dir','other-dir') would be more compatible with other systems? Because of slashes/backslashes?
  • Alan Leuthard
    Alan Leuthard about 7 years
    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.
  • mLstudent33
    mLstudent33 about 5 years
    whatever is a path?
  • Thomas meriaux
    Thomas meriaux almost 4 years
    @mLstudent33 Yes as string. I would suggest at least logging the error or a print statement so we know there is something wrong.
  • Amin Pial
    Amin Pial about 3 years
    this will fail because you don't have Administrator privilege to create a folder in Programs C Directory.