我有一个在Sublime文本中完美运行的python程序。文件中的main函数有一个参数(整数参数)。
def main(number = input())
但是当我尝试在命令行中运行它时,例如,
$python testFile.py 56
它什么都没给我。如何在命令行中发送整数?
答案 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