2
from glob import glob
from os.path import isfile
def countwords(fp):
   with open(fp) as fh:
       return len(fh.read().split())

print "There are" ,sum(map(countwords, filter(isfile, glob("*.txt") ) ) ), "words in the files."

在第一行,为什么不只是简单地导入 glob 库?

在“import glob”前面使用“from glob”有什么理由吗?

4

6 回答 6

5

如果你写import glob,你将需要使用glob.glob.

from glob import glob获取glob.glob并使其可用glob

于 2012-08-08T13:44:07.913 回答
4
>>> import glob
>>> dir(glob)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 
 'fnmatch', 'glob', 'glob0', 'glob1', 'has_magic', 'iglob', 'magic_check', 
 'os', 're', 'sys']

您可以在此处查看 glob 模块中的所有函数,例如,您可能需要 glob 的迭代器版本,在这种情况下,您将使用:

from glob import iglob
于 2012-08-08T13:43:52.343 回答
3

如果你使用import glob,对于函数glob("*.txt"),你必须写glob.glob("*.txt")

基本上,第一个globfrom glob import glob模块的名称,而第二个是函数的名称。

于 2012-08-08T13:44:33.140 回答
2

from glob import glob将导入模块glob的属性glob何时import glob导入整个模块

于 2012-08-08T13:45:25.447 回答
2

这个链接似乎很好地解释了所有不同的变化:

http://effbot.org/zone/import-confusion.htm

最重要的是,从模块中导入特定事物只会让您直接引用该事物而不是整个模块。

于 2012-08-08T13:47:35.067 回答
1

当您拥有importglob 时,您可以从该模块导入所有函数。当你有 时from xyz import abc,你只是从模块中导入abc函数。xyz在这种情况下,您是从模块中导入glob函数。glob

这样,在 Python 代码中,如果你想使用glob函数,而不是写glob.glob,你只需要写glob.

于 2012-08-08T13:44:52.823 回答