I am looking for some advice as to the best way to generate a file path using variables, currently my code looks similar to the following:
path = /my/root/directory for x in list_of_vars: if os.path.isdir(path + '/' + x): # line A print(x + ' exists.') else: os.mkdir(path + '/' + x) # line B print(x + ' created.')
For lines A and B as shown above, is there a better way to create a file path as this will become longer the deeper I delve into the directory tree?
I envisage an existing built-in method to be used as follows:
create_path(path, 'in', 'here')
producing a path of the form /my/root/directory/in/here
If there is no built in function I will just write myself one.
Thank you for any input.
If you're using Windows 11, simply right-click on it. Then, select “Copy as path” in the contextual menu. Alternatively, in Windows 10, you can also select the item (file, folder, library) and click or tap on the “Copy as path” button from File Explorer's Home tab in Windows 10.
You can use the os. mkdir("path/to/dir/here") function to create a directory in Python. This function is helpful if you need to create a new directory that doesn't already exist.
From the "Text" group, click [Quick Parts] > Select "Field..." Under "Field names," select "FileName." In the "Field properties" section, select a format. In the "Field options" section, check "Add path to filename." The file name will now appear in the header or footer.
You want the path.join() function from os.path.
>>> from os import path >>> path.join('foo', 'bar') 'foo/bar'
This builds your path with os.sep (instead of the less portable '/'
) and does it more efficiently (in general) than using +
.
However, this won't actually create the path. For that, you have to do something like what you do in your question. You could write something like:
start_path = '/my/root/directory' final_path = os.join(start_path, *list_of_vars) if not os.path.isdir(final_path): os.makedirs (final_path)
Yes there is such a built-in function: os.path.join
.
>>> import os.path >>> os.path.join('/my/root/directory', 'in', 'here') '/my/root/directory/in/here'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With