提问人:Richard Knop 提问时间:11/16/2010 更新时间:4/29/2022 访问量:122492
如何检查是否设置了命令行中的参数?
How to check if an argument from commandline has been set?
问:
我可以这样称呼我的脚本:
python D:\myscript.py 60
在脚本中,我可以做:
arg = sys.argv[1]
foo(arg)
但是,我如何测试是否已在命令行调用中输入了参数?我需要做这样的事情:
if isset(sys.argv[1]):
foo(sys.argv[1])
else:
print "You must set argument!!!"
答:
-10赞
J V
11/16/2010
#1
if(sys.argv[1]):
应该可以正常工作,如果没有参数 sys.argv[1] 将(应该)为 null
评论
3赞
GWW
11/16/2010
如果未设置该值,则将给出列表索引越界错误。
0赞
khachik
11/16/2010
它会随着IndexError
73赞
khachik
11/16/2010
#2
import sys
len( sys.argv ) > 1
30赞
chris
11/16/2010
#3
if len(sys.argv) < 2:
print "You must set argument!!!"
65赞
Katriel
11/16/2010
#4
不要用于处理命令行界面;有一个模块可以做到这一点:argparse
。sys.argv
您可以通过传递给 来将参数标记为必需。required=True
add_argument
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument("foo", ..., required=True)
parser.parse_args()
评论
20赞
Jonik
11/16/2010
如果需求很简单,那么使用真的有问题吗?sys.argv
1赞
Katriel
11/16/2010
@Jonik,不一定,但很少有理由不使用它。就像正则表达式偶尔对解析 HTML 很有用一样,但很少有理由不使用 HTML 解析器。
4赞
geedoubleya
3/23/2017
-1 提供了一个在理查德的情况下行不通的例子。如果是,那么它将是一个位置,你不能添加到位置。foo
60
required=True
6赞
DNS
11/16/2010
#5
如果您使用的是 Python 2.7/3.2,请使用 argparse
模块。否则,请使用 optparse
模块。该模块负责解析命令行,您可以检查位置参数的数量是否符合您的预期。
0赞
Rafi
11/16/2010
#6
我为此使用 optparse 模块,但我想因为我使用的是 2.5,如果您使用的是 2.7 或更高版本,您可以按照 Alex 的建议使用 argparse
2赞
Valentinos Ioannou
8/21/2014
#7
for arg in sys.argv:
print (arg)
#print cli arguments
您可以使用它来将参数存储在列表中并使用它们。是比这样使用它们更安全的方法sys.argv[n]
如果没有给出参数,则没有问题
8赞
Miguel Armenta
8/15/2018
#8
if len(sys.argv) == 1:
print('no arguments passed')
sys.exit()
这将检查是否传递了任何参数。如果没有参数,它将退出脚本,而不运行其余部分。
评论
0赞
bohrax
8/15/2018
感谢您的回答!请注意,已经有其他与此非常相似的答案。
2赞
Enrique Pérez Herrero
10/20/2021
#9
此脚本使用异常:IndexError
try:
print(sys.argv[1])
except IndexError:
print("Empty argument")
上一个:一个字符串有多少个字节
下一个:芹菜 获取已注册任务列表
评论
sys.argv
sys.argv[0]