如何在命令行中发送python文件执行的命令行参数?

时间:2014-09-15 20:23:09

标签: python python-3.x

我有一个在Sublime文本中完美运行的python程序。文件中的main函数有一个参数(整数参数)。

def main(number = input())

但是当我尝试在命令行中运行它时,例如,

$python testFile.py 56

它什么都没给我。如何在命令行中发送整数?

4 个答案:

答案 0 :(得分:5)

def main():
    number = int(sys.argv[1])  # this line will fail if you pass an argument that's not an integer
    print(number)

if __name__ == "__main__":
    main()

答案 1 :(得分:2)

你想要的是sys.argv

def main(number):
  print int(number)

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

然后,您将能够在$python testFile.py 56

中传递您想要的内容

答案 2 :(得分:0)

您的问题是您在脚本启动之前调用了testFile.py并提供了一个参数(并从def main()读取)。

您可以使用一些方法,但最简单的方法可能就是使用sys.argv来获取命令行参数,例如。

def main():
    number = int(sys.argv[1])

#this line calls main if you're calling the script directly:
if __name__ == '__main__':
    main()

请注意,在方法的签名中将可变参数(例如'input()')作为默认值,这种形式很差。

答案 3 :(得分:0)

正如其他人已经建议sys.argv可以用来获取代码中的命令行参数。

但是如果由于某些奇怪的原因你不想使用它,你也可以尝试在shell中使用pipe传递输入。

例如,

$ echo '56' | python testFile.py