直接从文件运行 python 方法/函数

Posted

技术标签:

【中文标题】直接从文件运行 python 方法/函数【英文标题】:Running a python method/function directly from a file 【发布时间】:2016-08-09 17:17:24 【问题描述】:

我想知道是否有一种方法可以直接从文件中直接运行 python 函数,只需在一行中提到文件名和函数。

例如,假设我有一个文件 'test.py' 和一个函数 'newfunction()强>'。

---------test.py----------

def newfunction():
     print 'welcome'

我可以运行 newfunction() 做类似的事情吗?

  python test.py newfunction

我知道如何导入和调用函数等。在 django 等 (python manage.py runserver) 中看到过类似的命令,我觉得有一种方法可以直接调用这样的函数。让我知道是否有类似的可能。

我希望能够将它与 django 一起使用。但是一个适用于任何地方的答案会很棒。

【问题讨论】:

我想你的问题可能已经被http://***.com/questions/3987041/python-run-function-from-the-command-line回答了 这实际上不是我想知道的。我想知道它是否可以以类似于“python manage.py migrate”等的方式完成。 【参考方案1】:

试试 globals()arguments (sys.argv)

#coding:utf-8

import sys

def moo():
    print 'yewww! printing from "moo" function'

def foo():
    print 'yeeey! printing from "foo" function'

try:
    function = sys.argv[1]
    globals()[function]()
except IndexError:
    raise Exception("Please provide function name")
except KeyError:
    raise Exception("Function  hasn't been found".format(function))

结果:

➜ python calling.py foo
yeeey! printing from "foo" function

➜ python calling.py moo
yewww! printing from "moo" function

➜ python calling.py something_else
Traceback (most recent call last):
  File "calling.py", line 18, in <module>
    raise Exception("Function  hasn't been found".format(function))
Exception: Function something_else hasn't been found

➜ python calling.py
Traceback (most recent call last):
  File "calling.py", line 16, in <module>
    raise Exception("Please provide function name")
Exception: Please provide function name

【讨论】:

@MukundGandlur 你为什么不能?没有帮助吗? 很高兴知道它有帮助。我很高兴它有用。【参考方案2】:

我觉得你应该看看:

https://docs.djangoproject.com/en/1.9/howto/custom-management-commands/

migraterunserverdbshell 等所有这些命令的实现方式与该链接中描述的方式相同:

应用程序可以使用 ma​​nage.py 注册自己的操作。为此,只需将 ma​​nagement/commands 目录添加到应用程序即可。

Django 将为该目录中名称不以下划线开头的每个 Python 模块注册一个 manage.py 命令。

【讨论】:

以上是关于直接从文件运行 python 方法/函数的主要内容,如果未能解决你的问题,请参考以下文章

python中怎么读取csv文件

如何使用 python 命令行从文件中运行 python 函数?

python 动态获取当前运行的类名和函数名的方法

从Python中其他进程中运行的函数调用类方法

从批处理文件运行python脚本时,如何自动将输入值传递给python“输入”函数

python 内置排序函数使用