7
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()

在前两行中,我对正在发生的事情有所了解,但想确保我完全理解它,因为这似乎很重要。

4

3 回答 3

18

如果这样做import sys,您将可以通过sys.foo或访问模块 sys 中的函数和变量sys.bar()。这可能会导致大量输入,尤其是在使用子模块中的某些内容时(例如,我经常需要访问django.contrib.auth.models.User)。为了避免这种冗余,您可以将一个、多个或所有变量和函数带入全局范围。from os.path import exists允许您使用该功能exists(),而不必一直添加它os.path.

如果你想从 os.path 导入多个变量或函数,你可以做 from os.path import foo, bar.

理论上,您可以使用 导入所有变量和函数from os.path import *,但通常不鼓励这样做,因为您最终可能会覆盖局部变量或函数,或隐藏导入的变量或函数。请参阅“import foo”和“from foo import *”有什么区别?解释一下。

于 2012-07-06T12:27:04.467 回答
9
from module import x

方法:

加载名为 的模块module,但仅获取x到当前命名空间。

于 2012-07-06T12:27:11.427 回答
3

用白痴的话来说,这意味着,

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

你为什么需要这样的东西?

考虑一下,如果没有 from ... import 语句,您的代码将如下所示

import USA

variableA = USA.iPhone()

使用 from ... import 语句看起来像,

from USA import iPhone

variableA = iPhone()
于 2017-03-03T05:13:28.133 回答