What does "from ... import ..." mean?

python

Solution

If you do `import sys`, you'll get to access the functions and variables in the module sys via `sys.foo` or `sys.bar()`. This can get a lot of typing, especially if using something from submodules (e.g. I often have to access `django.contrib.auth.models.User`). To avoid such this redundancy, you can bring one, many or all of the variables and functions into the global scope. `from os.path import exists` allows you to use the function `exists()` without having to prepend it with `os.path.` all the time.

If you'd like to import more than one variable or function from os.path, you could do `from os.path import foo, bar`.

You can theoretically import all variables and functions with `from os.path import *`, but that is generally discouraged because you might end up overwriting local variables or functions, or hiding the imported ones. See What's the difference between "import foo" and "from foo import *"? for an explanation.

Problem

``` from sys import argv from os.path import exists script, from_file, to_file = argv print "Copying from %s to %s" % (from_file, to_file) # we could two on one line too, how? input = open(from_file) indata = input.read() print "The input file is %d bytes long" % len(indata) print "Does the output file exist? %r" % exists(to_file) print "Ready, hit return to continue, CTRL-C to abort." raw_input() output = open(to_file, 'w') output.write(indata) print "Alright, all done." output.close() input.close() ``` On the first two lines I have some idea of what is going on, but want to make sure I fully understand it, as this seems like it might be important.

Original source