2012-07-06 22 views
5
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() 

En las dos primeras líneas tengo una idea de lo que está pasando, pero quiero asegurarme de que la entiendo completamente, ya que parece que podría ser importante.¿Qué significa "de ... importar ..." en términos simples de bonehead?

Respuesta

15

Si hace import sys, obtendrá acceso a las funciones y variables en el módulo sys a través de sys.foo o sys.bar(). Esto puede generar mucho tipeo, especialmente si se usa algo de los submódulos (por ejemplo, a menudo tengo que acceder al django.contrib.auth.models.User). Para evitar dicha redundancia, puede incluir una, muchas o todas las variables y funciones en el alcance global. from os.path import exists le permite usar la función exists() sin tener que anteponerla con os.path. todo el tiempo.

Si desea importar más de una variable o función de os.path, puede hacer from os.path import foo, bar.

En teoría, puede importar todas las variables y funciones con from os.path import *, pero esto generalmente se desaconseja porque puede terminar sobreescribiendo variables locales o funciones u ocultando las importadas. Ver What's the difference between "import foo" and "from foo import *"? para una explicación.

+0

¿Se puede poner esto en algún tipo de analogía de cocina? es decir, hacer panqueques? –

+4

De huevos de importación de nevera. Mucho más fácil que decir "Agregar Kitchen.Fridge.Egg.Yolk [2]" cada vez – Woody

+0

De modo que podría ser despensa, armario o refrigerador ... donde sea que quiera obtener los ingredientes, la importación es exactamente el ingrediente que quiero - harina de leche y/o huevos. Esto es más fácil que producir realmente cada uno de los ingredientes en el momento de la cocción. ¿Estoy en el camino correcto aquí? –

7
from module import x 

significa:

carga el módulo denominado module, pero sólo se ha podido recuperar x en el espacio de nombres actual.

1

En términos bonehead este medio,

from USA import iPhone # instead of importing the whole USA for an iPhone you now will just import the iPhone into your program, 

¿Por qué necesita algo como esto?

cuenta esto, sin la declaración de importación ... su código se verá así

import USA 

variableA = USA.iPhone() 

con la declaración de importación ... que parece,

from USA import iPhone 

variableA = iPhone() 
Cuestiones relacionadas