Nascent_Notes, 멋진 스크립트! uu
(명령 3)을로드하고로드 된 모듈 (명령 2)의 목록을 인쇄하려고 시도했지만 둘 다 정상적으로 작동하는 것 같습니다. 내가 (명령 4) "모듈을 찾아"하려고하면
그러나, 나는 다음과 같은 오류가 발생합니다 :
HlpWiz>>> 4
What module do you want to look more into?: uu
*An error occurred - probably because the module isn't loaded or is misspelled*
당신은 NameError: name 'uu' is not defined
을 얻어야한다
#!/usr/bin/env python
import sys
__import__('uu')
print(sys.modules['uu'])
print(dir(uu))
실행 해보십시오. 변수 이름 uu
에 액세스 할 수 없습니다 uu
모듈 -
는 그래서 __import__
성공적으로 uu
모듈, 을 가져 있지만 그것이 글로벌 네임 스페이스에 uu
를 추가하지 않는 것 같습니다. 그것은 sys.modules
그러나를 통해 액세스 할 수 있습니다
따라서,뿐만 아니라 input
보다 훨씬 안전 raw_input
을 사용
var_mod = raw_input("What module do you want to look more into?: ")
print "\n attempting to browse... please wait!"
time.sleep(2)
browse_mod(zlib = sys.modules[var_mod])
에
var_mod = input("What module do you want to look more into?: ")
print "\n attempting to browse... please wait!"
time.sleep(2)
browse_mod(zlib = var_mod)
을 변경 (사용자가 예상치 못한 실행할 수 없습니다/악의적 인 명령), 또한 raw_input
여기서 원하는 것을 수행합니다.
작은 노트에
, 당신은 또한 더 파이썬
for i,line in enumerate(sample):
print i+1, line
편집에
i = 1
for line in sample:
print i, line
i = i + 1
을 변경할 수 있습니다 :
sys.modules에가 (사전의 줄임말)는 딕셔너리를 . Dicts는 전화 번호부와 같습니다. 이름 (더 잘 알려진 "키")을 지정하고 전화 번호 (또는 더 일반적으로 "가치")를 반환합니다.
sys.modules의 경우 키는 모듈 이름 (문자열)입니다. 값은 모듈 객체 자체입니다.
괄호 표기법을 사용하여 dict의 값에 액세스합니다. 따라서 uu
은 단지 문자열이지만, sys.modules['uu']
은 모듈 uu
입니다.
는 현재 dicts에 전체 기사를 읽을 수 있습니다
http://docs.python.org/tutorial/datastructures.html#dictionaries이 스크립트는 질문에 직접 넣어 너무 오래 여기되지 붙여 넣기 –
를 스크립트를 붙여 넣습니다. –
전체 스크립트를 붙여 넣을 수 없습니다 - gs가 맞습니다. 너무 오래되었습니다. 하지만 약속 할 수있는 긴 스크립트는 아닙니다. P. 나는 어떤 부분이 문제를 설명하기에 충분할만큼 중요한지는 알지 못한다. 그러나 요약하려고 시도 할 수있다 : var1 = raw_input ("로드 할 모듈 이름은 무엇인가? : ") __import __ (var1) 그런 다음 스크립트가 실행되는 동안 sys.modules로 검사합니다. -로드 된 모든 모듈의 긴 목록을 인쇄하지만 var1 (모듈 이름)은 그 목록 - 그렇습니다. 나는 그것이 로딩되어 있고 올바르게 쓰여 있음을 알고 있습니다 : P. –