直接从文件运行 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/
migrate
、runserver
或 dbshell
等所有这些命令的实现方式与该链接中描述的方式相同:
应用程序可以使用 manage.py 注册自己的操作。为此,只需将 management/commands 目录添加到应用程序即可。
Django 将为该目录中名称不以下划线开头的每个 Python 模块注册一个 manage.py 命令。
【讨论】:
以上是关于直接从文件运行 python 方法/函数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 python 命令行从文件中运行 python 函数?