从PowerShell运行Python函数

从PowerShell运行Python函数,python,powershell,Python,Powershell,我有一个带脚本的.py文件 我想从PowerShell运行它。我可以通过写作来做到: C:\Users\AAA\AppData\Local\Continuum\Anaconda3\pythonw.exe "X:\Data\_Private\Data\test.py" 但是,我想向脚本传递一些参数。因此,我将所有脚本设置为main(argument1,argument2)函数。看起来是这样的: def main(argument1, argument2): def Hello(argum

我有一个带脚本的.py文件

我想从PowerShell运行它。我可以通过写作来做到:

C:\Users\AAA\AppData\Local\Continuum\Anaconda3\pythonw.exe "X:\Data\_Private\Data\test.py"
但是,我想向脚本传递一些参数。因此,我将所有脚本设置为
main(argument1,argument2)
函数。看起来是这样的:

def main(argument1, argument2):
    def Hello(argument1, argument2):
        print("Hi " + argument1 + " and " + argument2 + "!")
import sys

def hello(argument1,argument2):
    print("Hi " + argument1 " and " + argument2 "!"

if __name__ == "__main__":
    arg1 = sys.argv[1]
    arg2 = sys.argv[2]
    hello(arg1, arg2)
脚本的其余部分继续


也许有人可以告诉我,如何从PowerShell一行运行该脚本并传递参数?

我想这就是您想要的:

import sys

def Hello(argument1, argument2):
    print("Hi " + argument1 + " " + argument2 + "!")

if __name__ == "__main__":
    Hello(sys.argv[1],sys.argv[2])
来自PowerShell:

python test.py 1 2

当然,您可能希望检查argv索引是否在范围内。

主函数的使用应如下所示:

def main(argument1, argument2):
    def Hello(argument1, argument2):
        print("Hi " + argument1 + " and " + argument2 + "!")
import sys

def hello(argument1,argument2):
    print("Hi " + argument1 " and " + argument2 "!"

if __name__ == "__main__":
    arg1 = sys.argv[1]
    arg2 = sys.argv[2]
    hello(arg1, arg2)
您只定义main函数,但从不调用它

在这里阅读有关main的更多信息:

阅读有关sys.argv的更多信息:

感谢您提供的解决方案,它很有效!!但是,我的脚本中有一些不想加载的包,例如{from monthdelta import monthdelta}或{from openpyxl import Workbook}。我得到错误:ImportError:没有名为“monthdelta”的模块
。但是,{import pandas as pd}或其他几个包不会导致相同的问题。也许你也能帮上忙?只是刚刚看到你的评论。尝试在powershell提示符下键入:pip install monthdeltaIt在我尝试通过编写python的完整路径(C://../python.exe)来运行之后工作。然而,我遇到了另一个错误。我在脚本中有一个记录器,当脚本出现错误时,它会发送一封电子邮件。尽管脚本运行良好并提供了正确的结果,但我得到了一个错误,该参数没有传递给函数(如果没有该参数,我将无法获得所需的结果)。也许,你知道什么是问题吗?谢谢你的解决方案,它很有效!!但是,我的脚本中有一些不想加载的包,例如从monthdelta导入monthdelta或从openpyxl导入工作簿。我得到错误:ImportError:没有名为“monthdelta”的模块。但是,作为pd或其他几个包导入熊猫不会导致相同的问题。也许你也能帮上忙?你安装模块了吗?您必须安装它们(pip install。我已经安装了所有模块,并且在我尝试通过编写python的完整路径(C:/…../python.exe)来运行之后,它工作正常到PowerShell而不是“python”。但是,我遇到了另一个错误。我在脚本中有一个记录器,它在脚本引发错误时发送电子邮件。尽管脚本运行良好并提供了正确的结果,但我得到了一个错误,该参数未传递给函数(没有该参数,我将无法获得所需的结果).也许,你知道什么是问题吗?