我的脚本应具有2个可选参数(用户名,密码)和1个必需参数(URL)。每次启动代码时,它都会执行我想要的操作,但是即使提供了强制性参数或选择了--help选项,它也会这样做。
我希望它仅在满足必需选项并且选择了--help选项时才执行,我只希望它显示用法。
当前所有脚本正在使用提供的参数(或使用默认值)启动浏览器(Chrome),导航至用户指定的URL并使用指定的登录名(如果我使用-u选项,它按预期工作,但是,如果我不这样做,它仍会继续。如果我的理解是正确的,则argparse中的required=True
选项应要求用户至少提供该选项或抛出错误?
当我尝试运行该用法时,如果选择--help也会显示相同的问题(我可以在浏览器窗口旁边的控制台中看到它),但是脚本也运行,失败连接到任何网页,因为没有提供。
# Setting up script arguments/options
parser = argparse.ArgumentParser(description="Temp message - Will decide later.")
# Optional Parameters
parser.add_argument('-un', '--username', dest="username", default='something', help='Username used to login.')
parser.add_argument('-pa', '--password', dest="password", default='90909', help='Password used to login.')
# Required Parameters
parser_required = parser.add_argument_group('required parameters')
parser_required.add_argument('-u', '--url', dest="url", help='Use full CMS name, eg. "DummyDomain"', required=True)
result = parser.parse_args()
def open_and_setup():
# Setting vars. for login and page access.
url = 'http://' + result.url
username = result.username
password = result.password
# Setting up page access, maximising window.
browser.maximize_window()
time.sleep(1)
# Logging in using script (loginHandler).
login = loginHandler.loginHandler(browser, url, username, password)
login.signIn()
time.sleep(5)
if __name__ == '__main__':
open_and_setup()
browser.close()
我省略了import和global var。为了节省空间,但是如果需要,我可以更新问题。
TL; DR-努力使argparse具有强制性选项(url)。即使没有强制选项执行脚本,脚本也会执行并失败。使用--help选项时,脚本会显示用法指南,但还会运行脚本的其余部分,我希望它显示用法,但不执行。
我确定这只是我没看到的简单事情。
谢谢,如果有什么需要补充的,请询问。