微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法利用sys参数修改变量

如何解决无法利用sys参数修改变量

我正在尝试根据程序参数更改一些变量。

这是我的代码

#initialize all scaling factors to 1
x_scale = 1
y_scale = 1
z_scale = 1

#the second argument is the axis to scale (1-3)
axis_Select = (sys.argv[2])
#the third argument is the scaling factor
scaling_Factor = (sys.argv[3])

if axis_Select == 1:
    x_scale = scaling_Factor
elif axis_Select == 2:
    y_scale = scaling_Factor
elif axis_Select == 3:
    z_scale = scaling_Factor

然后我用以下命令调用程序:

python3 testScript.py /home/user/Desktop/file.extenstion 2 2

然后,如果我执行print(y_scale),它应该是1,而不是应该的2

这也适用于其他组合,我只是以y_scale为例。

解决方法

sys.argv的元素是字符串,在与整数比较之前,需要将它们转换为整数。

#the second argument is the axis to scale (1-3)
axis_Select = int(sys.argv[2])
#the third argument is the scaling factor
scaling_Factor = int(sys.argv[3])
,

您可以为此使用argparse

import argparse

parser = argparse.ArgumentParser()

parser.add_argument(
        "path",type=str,help="file path")
parser.add_argument(
        "axis_select",type=int)
parser.add_argument(
        "scaling_factor",type=int)

options = parser.parse_args()

options将包含为pathaxis_selectscaling_factor提供的值 options.axis_select

可访问

请注意,这将需要3个位置参数-pathaxis_selectscaling_factor 也会同时将其转换为正确的类型

如果需要将其设为可选,则可以使用

parser.add_argument(
    "--path",default="/somedefaultpath",)

在这种情况下,您需要使用--path /something

进行指定

更多详细信息 https://docs.python.org/3/library/argparse.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。