1

部分的な RSS フィードを取り込んで完全な RSS フィードを出力するプログラムを作成しましたが、これはケースバイケースです。あるサイトのレシピは、他のサイトのレシピと同じではありません。そこで、ドメインのベース名 (nyt や wsj など) を見て、それに基づいてモジュールを選択します。ただし、事前にすべてのモジュールをロードし、各レシピの論理条件を設定する必要があります。

私が必要としているのは、個々のモジュールをそれぞれのフォルダーに配置する方法です。URLベース名を解析するときに、モジュールを探してロードし、何らかのアクションを実行する必要があります。そのため、メイン コード ベースはモジュールから独立させたいと考えています。将来的にモジュールを追加できるようにしたいのですが、モジュールとやり取りするコードの部分には決して触れないようにしたいと考えています。

これがコード例です

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

ご覧のとおり、個々のモジュールのパーサーを呼び出します。私は各ウェブサイトに基づいてこれらの多くを持っています。フィードを読み込んで、モジュールを探し、ロードして呼び出し、存在しない場合は報告して、デフォルトの方法を試してください。

4

2 に答える 2

3

__import__関数を探しているようです。この関数はステートメントと同じことを行いimportますが、実行時にのみ認識される名前を import に渡すことができます。

だからあなたはするかもしれません:

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

などの例外をキャッチする必要がありますImportError

于 2010-02-01T22:35:04.010 に答える
1

imp モジュールを使用できます。

于 2010-02-01T22:51:34.017 に答える