在需要参数时运行不带参数的Python代码
我正在尝试编写一个python代码,该代码将在shell中执行,参数如下:在需要参数时运行不带参数的Python代码,python,shell,terminal,arguments,Python,Shell,Terminal,Arguments,我正在尝试编写一个python代码,该代码将在shell中执行,参数如下: python programName.py arg1 arg2 我必须编写代码,这样如果没有传递参数,它将默认为代码中声明的默认值。我尝试使用类似的方法来实现这一点: # ... Imports such as sys x = argv[0] y = argv[1] # ... Other Code def main(): if x is None: x = 0 if y is None: y = 12
python programName.py arg1 arg2
我必须编写代码,这样如果没有传递参数,它将默认为代码中声明的默认值。我尝试使用类似的方法来实现这一点:
# ... Imports such as sys
x = argv[0]
y = argv[1]
# ... Other Code
def main():
if x is None:
x = 0
if y is None:
y = 12
# ... Other Code
但是Python不喜欢我这样做,当没有参数传递时,它会抛出一个错误
很抱歉,我无法显示错误,因为该程序位于我的另一台计算机上,我不在。正确的方法是什么?试试这个:
import sys
# ... Imports such as sys
x = sys.argv[1] if len(sys.argv) > 1 else None # None is the default value
y = sys.argv[2] if len(sys.argv) > 2 else None # None is the default value
# ... Other Code
sys.argv[0]
->给出程序文件名
在上面的问题中,您正在运行
python程序文件\u name x y
,在本例中sys.argv[0]
为您提供程序文件\u name您应该检查argv
的长度:
if len(argv) < 2:
x = 0
if len(argv) < 3:
y = 12
如果len(argv)<2:
x=0
如果len(argv)<3:
y=12
执行以下操作如何。您需要检查参数列表的长度以确定传递的参数数
import sys
x = None
y = None
if len(sys.argv) > 3:
print("Usage: ....")
sys.exit(1)
if len(sys.argv) > 1:
x = sys.argv[1]
if len(sys.argv) > 2:
y = sys.argv[2]
没有indexer
和UnboundLocalError
?在上面的问题中,他正在运行python程序\u file\u name x y,在本例中,sys.argv[0]为您提供程序\u file\u name,我的意思是似乎希望检查是否没有arg2
,然后将y
设置为12
。但是如果真的没有arg2
,那么y=sys.argv[2]
将产生一个indexer
。函数将在这里产生一个UnboundLocalError
,因为x
或y
在这里是一个全局变量,但您没有使用global x,y
。他可以根据自己的需要修改逻辑部分,实际问题在于他访问参数的方式,这在上面的回答中得到了纠正。我觉得这样做会给自己带来更多的麻烦,为什么不系统地检查并建立x和y值,例如,你有if len(sys.argv)==2:x=sys.argv[1]如果len(sys.argv)==3:y=sys.argv[2]。。。。etcIt并不完全符合您的要求,但我认为argparse是处理Python参数的最佳方法: