[英]How to print a variable from a function at python prompt
目錄中有各種python文件,所有這些文件都包含一個函數desciption(),如下所示:
def description():
desc = 'something'
return desc
現在我有main.py如下:
def a():
pth = os.listdir('homedir/workspace')
for filename in pth :
exec "import " + filename
desc = eval(filename + '.desciption()')
print desc
現在當我運行python main.py時,沒有任何反應。 運行python main.py時如何打印此desc? 提前致謝!
假設導入工作,並且您在每次迭代中導入了一個名為filename
的模塊,那么您可以按名稱獲取模塊,並調用其descrpition()
方法:
import sys
mod = sys.modules[filename]
print mod.description()
但請注意,打印模塊的pydocs可能更有意義:
print mod.__doc__
您沒有在此行中正確關閉引號:
pth = os.listdir('homedir/workspace)
你也不應該在這里使用eval:
desc = eval(filename + '.desciption()')
我假設您想通過變量導入:
exec "import " + filename
它應該是這樣的:
def a():
import importlib
pth = os.listdir('homedir/workspace')
for filename in pth :
mdl = importlib.import_module(os.path.splitext(filename)[0])
desc = mdl.description()
print desc
請參閱https://docs.python.org/2/library/importlib.html#importlib.import_module
https://docs.python.org/2/library/os.path.html#os.path.splitext
desc = None
啟動函數 def a():
pth = os.listdir('homedir/workspace')
for filename in pth:
module_name = os.path.splitext(filename)[0]
exec "import " + module_name
desc = eval(module_name + '.description()')
print desc
確保main.py與您的模塊位於同一路徑。 或者將其添加到sys路徑中
import sys
sys.path.append(r"homedir/workspace")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.