2014-06-11 6 views
3

여기에서 묻는 사람 : IPython 자체에서 IPython-magic-function을 사용하는 별칭을 만들고 싶습니다.IPython : 마법 함수 자체를 사용하는 별칭

는 의미 : 나는 종종이 같은 별칭 생성하고 싶습니다 따라서

%run process.py 

를 다시 입력해야합니다 rp를 호출 할 때

%alias rp %run process.py 

작성이 작동하지만,을, 그것은 말한다 명령 %run을 찾을 수 없습니다. 이 작업 방법에 대한 아이디어가 있으십니까?

+0

는 .ipy 접미사 스크립트를 사용해보십시오. 참조 : http://stackoverflow.com/questions/21541319/how-to-run-ipython-script-from-the-command-line-syntax-error-with-magic-functi/21542596#21542596 – ditkin

+0

내가 원하지 않는 시작할 때 실행해라, 나는 단지 명령을 이용할 수있게하고 싶다. 그래서 스크립트를 어디에 두어야 할까? – tim

답변

4

이 시도 :

당신이 IPython 콘솔을 입력하면 입력 %run process.py

는 그런 다음 %run process.pyrp를 바인딩 할 %macro 마법을 사용할 수 있습니다.

In 입력 저장을 사용하십시오.

%run process.py 
%macro rp In[-2] 

작동합니다! 다양한 폼 시작 단부의 정수 또는 정수가 될 수있다 -


%macro%macro name range 구문을 사용하여, 입력의 범위를 커버 할 수있다.

예를 들어, 하나의 명령으로 두 개의 기능을 수행하려면 라인 범위를 지정할 수 있습니다.

정의 기능 :

In[20]: def foo(x): return x 
In[21]: def bar(x): return x*x 

시간 기능 :

In[22]: %timeit foo(100) 
10000000 loops, best of 3: 137 ns per loop 
In[23]: %timeit bar(100) 
10000000 loops, best of 3: 194 ns per loop 

매크로 바인딩에 이름을 time_fb : 바인딩 매크로

In[24]: %macro time_fb 22-23 

:

Macro `time_fb` created. To execute, type its name (without quotes). 
=== Macro contents: === 
get_ipython().magic('timeit foo(100)') 
get_ipython().magic('timeit bar(100)') 

는 작동 확인 :

In[25]: time_fb 
10000000 loops, best of 3: 135 ns per loop 
10000000 loops, best of 3: 192 ns per loop 
+0

문제는 그 예입니다. 매크로를 사용할 때 (파이썬 스크립트에서'w.warn ("blaaaaa") '를 사용하여 경고 메시지가 출력됩니다. – tim

+1

@tim - w.filterwarnings ("always")를 스크립트 맨 위에 넣으면, 항상 경고를 표시해야합니다. 여기에 더 많은 표시 옵션 (https://docs.python.org/2/library/warnings.html#the-warnings-filter)이 있습니다. 경고는 매번 표시됩니다. '항상'. – GuiltyDolphin