将命令行参数处理为变量的最佳方法是什么?我正在尝试使用python脚本函数,例如:
python file.py 192.168.1.48 8080
如果没有输入参数,则应打印以下内容 -
用法:python file.py(ip address)(port)
到目前为止,这是我的代码。我还没有成功地获得正确处理的论据。请注意,这仅仅是概念证明。我正在努力开发另一个脚本。我希望命令行参数用用户的输入填充下面的ip和port变量,并且如果可能的话,将输入验证为ip变量的IP地址和端口的整数。任何帮助都非常感谢:
import urllib2
import ssl
ip="192.168.1.48"
port="8080"
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
urllib2.urlopen("https://{0}:{1}".format(ip, port), context=ctx)
答案 0 :(得分:1)
我使用getopt。还有另一个名为argparse的库
此代码来自getopt:
的文档import getopt, sys
def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "ho:v", ["help", "output="])
except getopt.GetoptError as err:
# print help information and exit:
print str(err) # will print something like "option -a not recognized"
usage()
sys.exit(2)
output = None
verbose = False
for o, a in opts:
if o == "-v":
verbose = True
elif o in ("-h", "--help"):
usage()
sys.exit()
elif o in ("-o", "--output"):
output = a
else:
assert False, "unhandled option"
# ...
if __name__ == "__main__":
main()
对于您的特定情况,您可以只导入sys并设置
IP = sys.arv [1]
port = sys.argv [2]
你可能想要做一些错误检查。