Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

Tags:

python

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.

like image 367
Bob Dobbs Avatar asked Jul 06 '12 12:07

Bob Dobbs


1 Answers

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.

like image 102
Maik Hoepfel Avatar answered Oct 02 '22 13:10

Maik Hoepfel