Functions not executing in Python

Question:

I have a program that runs when the functions have not been defined. When I put code into a function, it does not execute the code it contains. Why? Some of the code is:

def new_directory():

    if not os.path.exists(current_sandbox):
        os.mkdir(current_sandbox)
Asked By: chrisg

||

Answers:

Your code is actually a definition of a new_directory function. It won’t be executed unless you make a call to new_directory().

So, when you want to execute the code from your post, just add a function call like this:

def new_directory():

 if not os.path.exists(current_sandbox):
   os.mkdir(current_sandbox)

new_directory()

I am not sure if that’s the behavior you expect to get.

Answered By: Alexei Sholik
def new_directory():  
  if not os.path.exists(current_sandbox):  
     os.mkdir(current_sandbox)

new_directory() 
Answered By: YOU

Problem 1 is that you define a function (“def” is an abbreviation of “define”), but you don’t call it.

def new_directory(): # define the function
 if not os.path.exists(current_sandbox):  
     os.mkdir(current_sandbox)

new_directory() # call the function

Problem 2 (which hasn’t hit you yet) is that you are using a global (current_sandbox) when you should use an argument — in the latter case your function will be generally useful and even usefully callable from another module. Problem 3 is irregular indentation — using an indent of 1 will cause anybody who has to read your code (including yourself) to go nuts. Stick to 4 and use spaces, not tabs.

def new_directory(dir_path):
    if not os.path.exists(dir_path):  
        os.mkdir(dir_path)

new_directory(current_sandbox)
# much later
new_directory(some_other_path)
Answered By: John Machin
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.