是否可以向IPython的魔法命令添加自定義標誌?更具體地講,我想用%運行命令用自制的標誌:如何添加自定義標誌到IPython的魔法命令? (.ipy文件)
%run script.ipy --flag "option"
,並能夠使用「選項」裏面的腳本。
對於.py文件,答案就在這裏提供:Command Line Arguments In Python
是否可以向IPython的魔法命令添加自定義標誌?更具體地講,我想用%運行命令用自制的標誌:如何添加自定義標誌到IPython的魔法命令? (.ipy文件)
%run script.ipy --flag "option"
,並能夠使用「選項」裏面的腳本。
對於.py文件,答案就在這裏提供:Command Line Arguments In Python
正如在評論中指出的,這個問題不只是在Python腳本處理命令行參數。這是關於通過%run
在.ipy
文件中處理它們。
如果我創建test.ipy
作爲
import sys
print(sys.argv)
,並從shell中運行它,我看到了命令行參數:
1223:~/mypy$ python3 test.ipy -test foo
['test.ipy', '-test', 'foo']
但是從ipython
會議上,我不
In [464]: %run test.ipy --flag test
['/usr/bin/ipython3']
如果我用py
名稱複製
In [468]: %run testipy.py --flag test
['testipy.py', '--flag', 'test']
因此,%run ...ipy
行爲有所不同。這是一個ipython
問題,不是一般的Python命令行。
================
的%run
文檔具有了這一點:
有一個特殊的使用情況,其上面的文字不如果文件名以.ipy [nb]結尾,則應用: ,該文件作爲ipython腳本運行, 就好像命令是在IPython提示符上編寫的一樣。
在這種情況下,test.ipy
腳本看到了同樣的sys.argv
,我當我輸入做:
In [475]: sys.argv
Out[475]: ['/usr/bin/ipython3']
所以,如果我修改sys.argv
在當前會話中,如通過附加幾個字符串:
In [476]: sys.argv += ['--flag','test']
In [477]: sys.argv
Out[477]: ['/usr/bin/ipython3', '--flag', 'test']
In [479]: %run test.ipy
['/usr/bin/ipython3', '--flag', 'test']
我的ipy
腳本現在看到它們。
所以這就是答案 - 在使用%run ...ipy
之前將命令行參數放入sys.argv
。
(我已經做了這種與做先進的東西時,與sys.argv
擺弄的。)
更多ipython
魔術
In [480]: %run??
顯示我的文檔和代碼兩者。因此,我可以看到它是如何處理.ipy
文件特殊的。既然它很容易找到,我不會在這裏複製它。
還有另一種解決方案 - 不要試圖使用ipy
文件的命令行編碼風格。
如果我添加一個
print(x)
線到測試文件,並在我的IPython會話中定義的x
,我看到打印。但是我在.py
裏放了同一張照片,我會得到一個Nameerror
。當他們說ipy
就像輸入的那樣運行時,它們就是這個意思。實際上,運行ipy
是來自剪貼板的%paste
的替代方案。
你有試過嗎?什麼沒有用? –
語法有效,但我不知道如何訪問腳本中的標誌。 – Laurent
可以使用鏈接問題中提供的方法之一(例如'argparse'),或者使用'import sys; sys.argv'直接(這是一個列表) –