繁体   English   中英

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

[英]How to send in command line arguments for a python file execution in command line?

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

def main(number = input())

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

$python testFile.py 56

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

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()

您想要的是sys.argv

def main(number):
  print int(number)

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

然后,您将可以在$python testFile.py 56传递所需的内容

您的问题是您正在调用testFile.py并在脚本启动之前(并从def main()读取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()”)作为默认值是一种糟糕的形式。

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

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

例如 ,

$ echo '56' | python testFile.py

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM