簡體   English   中英

如何在python提示符下從函數打印變量

[英]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

  1. 你錯過了pth變量中的結束'
  2. 你已經在最后一行引用了desc而沒有先聲明它。
    使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM