os.makedirs doesn't understand "~" in my path

PythonLinuxPath

Python Problem Overview


I have a little problem with ~ in my paths.

This code example creates some directories called ~/some_dir and do not understand that I wanted to create some_dir in my home directory.

my_dir = "~/some_dir"
if not os.path.exists(my_dir):
    os.makedirs(my_dir)

Note this is on a Linux-based system.

Python Solutions


Solution 1 - Python

You need to expand the tilde manually:

my_dir = os.path.expanduser('~/some_dir')

Solution 2 - Python

The conversion of ~/some_dir to $HOME/some_dir is called tilde expansion and is a common user interface feature. The file system does not know anything about it.

In Python, this feature is implemented by os.path.expanduser:

my_dir = os.path.expanduser("~/some_dir")

Solution 3 - Python

That's probably because Python is not Bash and doesn't follow same conventions. You may use this:

homedir = os.path.expanduser('~')

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJohanView Question on Stackoverflow
Solution 1 - PythonSilentGhostView Answer on Stackoverflow
Solution 2 - PythonddaaView Answer on Stackoverflow
Solution 3 - PythongruszczyView Answer on Stackoverflow