哪些文件的名称来自result dir(scrapy)命令?

时间:2018-07-28 13:00:55

标签: python scrapy

使用以下命令,我会在scrapy模块内看到名称:

>>>import scrapy
>>>dir(scrapy)
['Field', 'FormRequest', 'Item', 'Request', 'Selector', 'Spider', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_txv', 'exceptions', 'http', 'item', 'link', 'selector', 'signals', 'spiders', 'twisted_version', 'utils', 'version_info']

documentation中说:

  

模块是一个包含Python定义和语句的文件。

因此,我尝试查找scrapy文件以查看其中的定义名称:

$find / -name "scrapy*" -print
/usr/local/lib/python2.7/dist-packages/scrapy
/usr/local/lib/python2.7/dist-packages/scrapy/templates/project/scrapy.cfg
/usr/local/bin/scrapy
/root/tutorial/scrapy.cfg

但是在该文件中,没有类似dir(scrapy)结果的任何名称。

我是python和OO的新手,请尝试进一步了解Scrapy Framework中的刷新。

1 个答案:

答案 0 :(得分:1)

导入模块后,只需再次输入模块名称即可查看与该模块相对应的实际文件

>>> import scrapy
>>> scrapy
<module 'scrapy' from 'venv/scrapy/local/lib/python2.7/site-packages/scrapy/__init__.pyc'>

从上面的输出中,我们可以看到它来自文件'venv/scrapy/local/lib/python2.7/site-packages/scrapy/__init__.pyc',而对应的python源文件将为'venv/scrapy/local/lib/python2.7/site-packages/scrapy/__init__.py'

如果在您喜欢的编辑器中打开文件'venv/scrapy/local/lib/python2.7/site-packages/scrapy/__init__.py',您会发现它从子模块中导入了很多

# Declare top-level shortcuts
from scrapy.spiders import Spider
from scrapy.http import Request, FormRequest
from scrapy.selector import Selector
from scrapy.item import Item, Field

因此,如果您想查看'Item'的定义,就可以检查item.py下的文件venv/scrapy/lib/python2.7/site-packages/scrapy/