Python Command Line Arguments to Variables and Input Validation
本问题已经有最佳答案,请猛点这里访问。
将命令行参数处理为变量的最佳方法是什么?我正在尝试使用类似以下的python脚本函数:
python文件.py 192.168.1.48 8080
如果没有输入参数,则应打印以下内容-
用法:python file.py(IP地址)(端口)
到目前为止,这是我的代码。到目前为止,我还没有成功地获得要正确处理的参数。请注意,这只是概念的证明。我正试图让这个工作来开发另一个脚本。我希望命令行参数用用户的输入填充下面的IP和端口变量,并尽可能将输入验证为IP变量的IP地址和端口的整数。非常感谢您的帮助:
1 2 3 4 5 6 7 8 9 10 11 12 | 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) |
我使用GETOPT。还有一个叫做argparse的库
此代码来自getopt的文档:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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〕端口=系统参数[2]
不过,您可能需要进行一些错误检查。