Home > Mobile >  I can't understand what the os.getenv() function does even though I searched for it
I can't understand what the os.getenv() function does even though I searched for it

Time:10-10

Like I said in the title I don't get what os.getenv("HOME") does in this code. I am following a course on an online site and the tutor was coding an interface with PyQt5 similar to notepad. I searched for an answer but they are a bit too advanced I guess. Also I have no idea what an environment variable is. By the way this is my first question on stack so excuse me for any possible mistakes and insufficient information.

def open_file(self):

        file_name=QFileDialog.getOpenFileName(self,"Open File",os.getenv("HOME"))

        with open(file_name[0],"r") as file:
            self.writing_ar.setText(file.read())

The function above is connected to a button self.open such as self.open.clicked.connect(self.open_file) And self.writing_ar is a QTextEdit object

CodePudding user response:

In the case of os.getenv('HOME'), it's a UNIX-centric way to get the current user's home directory, which is stored as an environment variable per POSIX specification. A typical home directory location is /Users/yourname on MacOS, or /home/yourname on Linux, or c:\Users\Your Name on Windows -- so that's what this code is trying to look up.

The set of environment variables is effectively a key/value store, mapping strings to other strings, that is copied from any program to other processes it starts; they're thus a way to share configuration and other information between programs (though it only shares information down the tree; changes made by a child process are not seen by its parent).

If you want something that works reliably everywhere, including Windows, consider os.path.expanduser("~") instead. Thus, your code might become:

file_name = QFileDialog.getOpenFileName(self,
                                        "Open File",
                                        os.path.expanduser("~"))

See also What is the correct cross-platform way to get the home directory in Python?

CodePudding user response:

It basically gets an environment variable for you and cast that onto a python variable.

From the code you shared, there should be a variable defined at the operating system level named HOME.

In Linux, that can be done with

export HOME="something_here"

You can check that this variable has actually been defined by typing

echo "$HOME"

in the terminal.

You can think of the os.getenv() method like it "echoes" the value of that argument onto some variable.

  • Related