명령 줄에서 인수를 받아들이는 모듈을 가지고 있는데 그 모듈을 A
이라고 부릅니다. 별도의 프로세스로 A
을 실행하지 않고 A
의 명령 줄없이 인수 전달
B
있도록
B
-
I는 다른 모듈로부터 A
을 실행하고 싶다.
그 방법은 무엇입니까? 나는 그러나 정말하지 않는 것이 좋습니다 ... 작동합니다 생각
명령 줄에서 인수를 받아들이는 모듈을 가지고 있는데 그 모듈을 A
이라고 부릅니다. 별도의 프로세스로 A
을 실행하지 않고 A
의 명령 줄없이 인수 전달
B
있도록
B
-
I는 다른 모듈로부터 A
을 실행하고 싶다.
그 방법은 무엇입니까? 나는 그러나 정말하지 않는 것이 좋습니다 ... 작동합니다 생각
이는 모듈 A
이 인수를 취하는 방식에 따라 다릅니다. 그것은 단지이 sys.argv
살펴보고 더 __main__
시험이없는 경우에, 당신은 sys.argv
을 변경할 수 :
sys.argv[1:] = ['arg1', 'arg2']
는 모듈 A
을 가져옵니다.
def main(*args):
# main code for module
if __name__ == '__main__`:
import sys
main(*sys.argv[1:])
은 다음 A
를 가져올 수 있습니다 직접 main()
전화 : 당신이 A
직접 작성하는 경우
그러나, 대신 __main__
테스트에서라는 함수를 사용
import A
A.main('arg1', 'arg2')
참고 모듈 A
이 자신의 것이 아니며 에 이라는 테스트가 있지만 그 중 모든 작업을 수행하는 경우 if __name__ == '__main__':
제품군을 사용하면 침몰되어 코드를 재생성해야합니다.
하하. 나는 이걸로 이겼다. P –
@JoranBeasley : 글쎄, 그게 가장 빠른 카운트인지 보자. :-피 –
import sys
sys.argv[1:] = ["My Arguments","other Args"] #dont replace [0] ...since it can let you know which script was actually executed ...
import A
A.run() #or whatever
....
는 모두 명령 줄에서와 모듈로 실행할 수 있도록 그냥 스크립트의 메인 메소드를 정의 :
def main(arg1, arg2):
# All your code goes here
if __name__ == '__main__':
main(*sys.argv[1:])
그런 다음 중 하나를 수행 할 수 있습니다
$ a.py x y
또는
>>> import a
>>> a.main('x', 'y')
A가 협동하지 않으면 (예 :'main (argv)'기능을 가짐) 꽤 좋은 방법이 아닙니다. 너는 그렇게하기 위해 그것을 바꿀 수 없다고 생각 하나? – delnan