如何从批处理文件中调用特定的Python函数?

时间:2014-03-10 22:29:12

标签: python batch-file

假设我有这个简单的Python脚本,名为 MyScript.py

def MyFunction(someInput):
    #Do something with input

我想用 someInput 编写一个专门从 MyScript 调用 MyFunction 的批处理文件。

现在,我可以做一些Python-foo并添加:

import sys

def MyFunction(someInput):
    #Do something with input

if __name__ == "__main__":
    eval(sys.argv[1])

然后我可以使用这样的批次:

python MyScript.py MyFunction('awesomeInput')
pause

但我觉得这里有一个更明显的解决方案,不涉及我改造“_ name _ ==”_ main _“< / strong>我的每个脚本中的逻辑。

4 个答案:

答案 0 :(得分:6)

如果您与脚本位于同一文件夹中,则可以执行以下操作:

python -c "import Myscript;Myscript.MyFunction('SomeInput')"

答案 1 :(得分:1)

事实上。您可以使用-c(命令)参数。

python -c "import MyScript; MyScript.MyFunction('someInput')"

答案 2 :(得分:1)

您可以使用此技巧编写批处理文件:

@echo off
rem = """
rem Do any custom setup like setting environment variables etc if required here ...

python -x "%~f0" %*
goto endofPython """

# Your python code goes here ..

from MyScript import MyFunction

MyFunction('awesomeInput')

rem = """
:endofPython """

答案 3 :(得分:0)

my_function.py:

import sys

def MyFunction(someInput):
    print 'MyFunction:', someInput
    #Do something with input

if __name__ == "__main__":
    pass

你用shell调用它:

python -c 'from my_function import MyFunction ; MyFunction("hello")'