Python 通过终端使用sys.argv进行输入

Python 通过终端使用sys.argv进行输入,python,input,terminal,sys,Python,Input,Terminal,Sys,我编写了一个Python脚本,现在正试图通过命令行运行它。它由一个函数组成,该函数接受一个强制参数和几个可选参数 def main(输入文件夹,迭代次数=1000,概率截止时间=40,阈值=10):… 现在我尝试通过命令行使其可执行,如下所示: 如果名称=“\uuuuu main\uuuuuuuu”: main(sys.argv[1]) 只要我只提出一个论点,这就行得通;但是我不知道如何接受附加的可选输入,sys.argv作为列表提供 有没有一种简单的方法可以用这种方法实现这一点 或者是否需要

我编写了一个Python脚本,现在正试图通过命令行运行它。它由一个函数组成,该函数接受一个强制参数和几个可选参数

def main(输入文件夹,迭代次数=1000,概率截止时间=40,阈值=10):…

现在我尝试通过命令行使其可执行,如下所示:

如果名称=“\uuuuu main\uuuuuuuu”:
main(sys.argv[1])

只要我只提出一个论点,这就行得通;但是我不知道如何接受附加的可选输入,
sys.argv
作为列表提供

  • 有没有一种简单的方法可以用这种方法实现这一点
  • 或者是否需要使用其他模块,例如 ?
  • 我也尝试将关键字参数输入到函数中,但是 也无法实现这一目标——这是可行的方法吗

我正在Mac上使用Python 2.7。非常感谢您的帮助

我总是使用argparse,因为它提供了很好的错误处理,将字符串转换为int或打开的文件,并清楚地记录了选项。但是,这应该满足您的要求:

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

我总是使用argparse,因为它提供了很好的错误处理,将字符串转换为int或打开的文件,并清楚地记录了选项。但是,这应该满足您的要求:

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

我想说这是的一个副本,因为这是您要求的机制(以及跳过argv的第一项的
[1://code>),这可能是真的,但我没有找到,因为我没有使用正确的搜索词。我应该删除这个吗?但是我想指出,
sys.argv
的所有元素都是字符串,所以当你执行
main(*sys.argv[1:])
时,就像在接受的答案中一样,你需要自己解析数字。是的,只是提醒你,因为你的默认值已经是整数,所以任何转换都是多余的(没问题,但你可能忘了为什么需要转换)类型转换是我更喜欢argparse的另一个原因,@TadhgMcDonald Jensen。我已经把它添加到了答案中。我想说这是重复的,因为这是你要求的机制(以及跳过argv的第一项的
[1://code>)这可能是真的,但我没有找到,因为我没有使用正确的搜索词。我应该删除这一个吗?但是,我想指出,
sys.argv
的所有元素都是字符串,所以当您执行
main(*sys.argv[1:])时
就像在接受的答案中一样,您需要自己解析数字。是的,只是提醒您,因为您的默认值已经是整数,所以任何转换都是多余的(这不是问题,但您可能忘记了为什么需要转换)类型转换是我更喜欢argparse的另一个原因,@tadhgmandald Jensen。我已经将它添加到了答案中。