我写一个程序,它在部分RSS频道,并输出一个完整的,但它是一个通过根据具体情况。对于一个网站的配方是不一样的配方为其他。所以我要做的就是看看域基本名称(例如纽约时报或华尔街日报),并选择基于该模块。虽然我需要加载前手的每一个模块,并为每个配方的逻辑条件。

我需要的是一种方法,只是有个别模块在其各自的文件夹,当我解析出URL基名我希望它看起来的模块,加载它,并采取了一些行动。所以,我想主要的代码基础,以独立于模块。我希望能够添加模块在未来,切勿触摸其与之互动的代码部分。

下面是一个代码示例

if "nyt" == feed:
        nyt.parser(posixpath.basename(url), urldir, rss_file_path, url, feed)

正如你可以看到我所说的个别模块的解析器。我有很多的这些基于每个网站上。我想芦苇饲料,然后能够检查模块,加载并调用它,然后,如果它不存在举报和尝试的默认方法。

有帮助吗?

解决方案

这听起来像你正在寻找的 __import__ 功能。这个函数做同样的事情作为import语句,但可以让你的名字传递给可能仅在运行时被称为进口。

所以,你可能做的:

parsemodule = __import__(feed)
parsemodule.parser(posixpath.basename(url), urldir, rss_file_path, url, feed)

您将要捕获异常比如ImportError

其他提示

可以使用进出口模块

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top