Below are two versions of the same create_dir function that creates a directory from a file path supplied as file_path argument.
The Version A checks if there is a directory in the supplied as a function argument file_path and only then tries to create a directory. The second Version B skips the extra check and feeds the output of the os.path.dirname(file_path) command straight into the os.makedir. Also, please note, that there are three if statements used in Version A, while version B doesn't have any.
Which version A or B is more preferred or more Pythonic?
Version A:
def create_dir(file_path):
dirname = None
os_dirname = None
if file_path:
dirname = os.path.dirname(file_path)
if dirname:
os_dirname = dirname
if os_dirname:
try:
os.makedirs(os_dirname)
except OSError as e:
if e.errno != errno.EEXIST:
raise
Version B
def create_dir(file_path):
try:
os.makedirs(os.path.dirname(file_path))
except Exception as e:
if e.errno != errno.EEXIST:
raise(e)