【问题标题】:Adding custom commandline parameters to run if elif in python添加自定义命令行参数以在 python 中运行 if elif
【发布时间】:2018-02-02 17:15:40
【问题描述】:

我需要在 python 文件中添加一个命令行参数(我没有在里面定义函数),以便参数是平台,然后在我需要使用的文件中:

if platform == iphone:
    <execute some code>
elif platform == ipad:
    <execute some other code>

基本上 if 和 elif 下定义的内容是相同的代码,但使用不同的资源(图像、txt 文件等)。我需要的是使用平台参数从命令行运行该文件的可能性,例如:

python somefile.py -iphone

现在我尝试了这样的 argparse:

platform = argparse.ArgumentParser()
platform.add_argument("iphone")
platform.add_argument("ipad")
platform.parse_args()

但显然它是错误的和/或缺少某些东西,因为它根本不起作用。我正在寻找一种最简单的方法来实现这一目标。

【问题讨论】:

标签: python python-3.x command-line-arguments argparse execution


【解决方案1】:

如果您将命令传递为python somefile.py iphone 然后您可以使用sys.argv 获取在终端中传递的参数。 它给出了通过命令传递的参数列表。在您的情况下,sys.argv 将返回 ['somefile.py','iphone'] ,即第 0 位将包含程序名称,并且从第 1 位开始包含所有传递的参数。

import sys

platform=sys.argv[1]

if platform == 'iphone':
    <execute some code>
elif platform == 'ipad':
    <execute some other code>

【讨论】:

  • 好的,这个可行,但我想出了另一个想法,如果可以这样添加另一个参数,那将被传递到一个变量中。 F.e.我运行 python somefile.py -iphone -2.20.0 以便第二个参数是版本并保存到此文件内的变量中?
  • 好吧,没关系。我做到了 :) 第二个是:version = sysargv[2] 然后我将该变量/参数传递给一个函数,该函数将第二个参数作为字符串精确地放在我需要的地方。
【解决方案2】:

如果您想使用ArgumentParser,您需要将代码更改为:

parser= argparse.ArgumentParser()
parser.add_argument("-platform")
args = parser.parse_args()

if args.platform == 'iphone'
    ##do something with that information 

用途:

python somefile.py -platform iphone

阅读更多关于 argParser here

否则你可以简单地使用sys.argv[1]

import sys 
if sys.argv[1] == 'iphone':
    # iphone

sys.argv 的用途:

python somefile.py iphone

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2017-08-17
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多