2016-05-19 85 views
2

我已經構建了嵌入式凍結模塊和一些主腳本的python二進制文件。我們稱之爲二進制pyemb如何使用「凍結」Python二進制文件的參數執行python腳本?

我想使用一些從其他Python腳本冷凍模塊 - 它似乎最好的解決方案是從pyemb提供的接口,如:

pyemb python "somescript.py --arg1 --arg2 arg3" 

但我怎麼能我的Python中實現該命令python腳本本身?

有Python函數execexecfile,但它們不能用參數和其他命令行工具。

+0

它應該和'pyemb「somescript.py --arg1 --arg2 arg3」'有什麼不同? – pacholik

+0

@pacholik它是一個簡單的界面糖 - 'pyemb'旨在做一些除了運行python腳本以外的有用的東西,所以'python'只是一個接口命令。 –

+0

所以* pyemb *不是Python解釋器?當你鍵入'pyemb python'時它應該運行*真正的Python嗎? – pacholik

回答

0

一些簡單的像這應該工作:

if sys.argv[1] == 'python': 
    sys.argv.pop(1) 
    import runpy 
    runpy.run_path(sys.argv[1], run_name="__main__") 

模塊runpy,這非常好使。

0

你可以使用像sys.argv這樣的東西來解析你的命令行參數。

import sys 
import subprocess 

print sys.argv 
if sys.argv[1] == 'python': 
    subprocess.Popen([sys.argv[1], sys.argv[2]]) 
elif sys.argv[1] == 'notepad': 
    subprocess.Popen([sys.argv[1], sys.argv[2]]) 

結果:

>> python scratch.py python argument 
['scratch.py', 'python', 'argument'] 
python: can't open file 'argument': [Errno 2] No such file or directory 

>> python scratch.py python "argument argument2" 
['scratch.py', 'python', 'argument agument2'] 
python: can't open file 'argument agument2': [Errno 2] No such file or directory 

對於更強大的參數解析,我建議​​。

相關問題