2016-04-15 63 views
1

我有一個file1.py打電話從控制檯一個函數作爲參數

def battery(): 
    pass 

// much more methods here 

if __name__ == "__main__": 
    cmd = str((sys.argv)[1]) + "()" 
    os.system(cmd) 

現在我想用python file1.py battery調用file1.battery()從Linux控制檯。

但我得到的錯誤:

sh: 1: Syntax error: end of file unexpected 

回答

1

可以使用eval編譯字符串如代碼或使用全局當地人

def func(): 
    return 'hello' 

print eval('func()') 
print globals()["func"]() 
print locals()["func"]() 

>>> hello 
>>> hello 
>>> hello 

此外,該模塊可以導入自己:

import sys 

current_module = sys.modules[__name__] 
function = getattr(current_module, 'func') 
print function() 
+0

要注意,在考慮用戶輸入時,使用eval是非常危險的。 'eval(rm -rf /)'不好。 – Tommy

相關問題