2010-02-01 4 views
1

부분적인 RSS 피드를 받아서 전체를 출력하는 프로그램을 작성했지만 사례별로 하나씩 작성했습니다. 한 사이트의 요리법이 다른 사이트의 요리법과 다릅니다. 그래서 내가하는 일은 도메인 basename (예 : nyt 또는 wsj)을보고이를 기반으로 모듈을 선택하는 것입니다. 모든 모듈을 손에 넣기 전에로드해야하며 각 레서피에 대한 논리적 조건이 필요합니다.입력을 기반으로하는 Python 동적 모듈로드

내가 필요한 것은 각각의 개별 폴더가 각각의 폴더에 있고, url basename을 구문 분석하여 모듈을 찾고로드 한 후 조치를 취하는 방법입니다. 그래서 메인 코드베이스를 모듈과 독립적으로 만들고 싶습니다. 앞으로 모듈을 추가하고 모듈과 상호 작용하는 코드 부분을 절대 만지지 않을 수 있기를 바랍니다. 여기

코드 예제

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

당신은 내가 개별 모듈의 파서를 호출 볼 수 있듯이이다. 나는 각 웹 사이트에 기초한 이들 중 많은 것을 가지고있다. 피드를 리드하고 모듈을 찾고로드하여 호출 한 다음보고하지 않고 기본 메소드를 시도 할 수 있습니다.

답변

3

__import__ 기능을 찾고있는 것 같습니다. 이 함수는 import 문과 동일한 작업을 수행하지만 런타임시에만 알 수있는 가져 오기 이름을 전달할 수 있습니다.

그래서 당신은 할 수 있습니다

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

당신은 ImportError 같은 예외를 포착 할 것입니다.

관련 문제