質問

私は、部分的なRSSフィードを取り込んで、完全な1を出力するプログラムを書きましたが、それはケースバイケース1です。一つのサイトのためのレシピは、他のレシピと同じではありません。それでは、私がやっていることは(インスタンスNYTやWSJのための)ドメインベース名を見ていると、それに基づいてモジュールを選択してください。私は手の前にそれぞれ、すべてのモジュールをロードする必要があり、各レシピのための論理的な条件を持っているけれども。

何必要がちょうど自分のそれぞれのフォルダ内の個々のモジュールを持っていると私は、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としてキャッチ例外になるでしょう。

他のヒント

あなたが使用することができます IMPモジュールのます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top