退出命令以停止python文件执行

退出命令以停止python文件执行,python,try-catch,exit,Python,Try Catch,Exit,我正在从另一个python脚本执行python脚本submit.py,如下所示: response=os.popen(“python3 static/submit.py”+竞赛id+“”+任务id).read() 打印(答复) 但我无法找到正确的退出命令来停止脚本的执行 提交.py: 导入系统 导入操作系统 导入时间 从凭据导入用户名、密码 从selenium导入webdriver 从selenium.webdriver.common.keys导入密钥 从selenium.webdriver.

我正在从另一个python脚本执行python脚本submit.py,如下所示:

response=os.popen(“python3 static/submit.py”+竞赛id+“”+任务id).read()
打印(答复)
但我无法找到正确的退出命令来停止脚本的执行

提交.py

导入系统 导入操作系统 导入时间 从凭据导入用户名、密码 从selenium导入webdriver 从selenium.webdriver.common.keys导入密钥 从selenium.webdriver.common.by导入 竞赛id=(sys.argv)[1] 任务id=(sys.argv)[2] url=”https://codeforces.com/contest/“+竞赛id+”/问题/“+任务id” 尝试: chrome\u options=webdriver.ChromeOptions() chrome_选项。添加_参数('--headless') driver=webdriver.Chrome('chromedriver',Chrome\u options=Chrome\u options) 除: 打印(“WEBDRIVER错误”) #退出命令 尝试: 获取驱动程序(url) 除: 打印(“网络错误/站点不可用”) #退出命令 回车=驱动程序。查找元素(按.LINK_文本“回车”) 输入。单击() user\u name=driver.find\u element\u by\u id(“handleOrEmail”) 用户名。发送密钥(用户名) password=驱动程序。通过\u id(“密码”)查找\u元素\u 密码。发送密钥(密码) 提交=驱动程序。按类名称查找元素(“提交”) 提交。单击() 时间。睡眠(10) 尝试: 错误\u source\u file=驱动程序。按\u类\u名称(“shiftUp”)查找\u元素 打印(“无效凭证”) #退出命令 除: 通过 语言=驱动程序。按名称(“programTypeId”)查找元素 语言。发送密钥(“GNU G++17 7.3.0”) sourceFile=驱动程序。按名称查找元素(“sourceFile”) sourceFile.send_key(os.path.abspath(“竞赛/cf_”+str(竞赛id)+“/”+task_id+”.cpp”)) submit\u btn=驱动程序。按类名称查找元素(“submit”) 提交\u btn.单击() 尝试: 错误\u source\u file=驱动程序。按\u类\u名称(“shiftUp”)查找\u元素 打印(“重复代码提交”) 除: 打印(“提交的解决方案”) 驱动程序关闭() 在注释退出命令(#exit命令)的每个位置,我都需要适当的退出命令来放置注释

更新: 使用错误的凭据,我尝试使用sys.exit()作为exit命令,它抛出错误:

Traceback (most recent call last):
  File "static/submit.py", line 44, in <module>
    language = driver.find_element_by_name("programTypeId")
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 496, in find_element_by_name
    return self.find_element(by=By.NAME, value=name)
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 978, in find_element
    'value': value})['value']
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/home/pk/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"name","selector":"programTypeId"}
  (Session info: headless chrome=75.0.3770.90)
  (Driver info: chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.15.0-50-generic x86_64)
INVALID CREDENTIALS
回溯(最近一次呼叫最后一次):
文件“static/submit.py”,第44行,在
语言=驱动程序。按名称(“programTypeId”)查找元素
文件“/home/pk/.local/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,第496行,按名称查找元素
返回self.find_元素(by=by.NAME,value=NAME)
文件“/home/pk/.local/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,第978行,在find_元素中
'value':value})['value']
文件“/home/pk/.local/lib/python3.6/site packages/selenium/webdriver/remote/webdriver.py”,执行中第321行
self.error\u handler.check\u响应(响应)
文件“/home/pk/.local/lib/python3.6/site packages/selenium/webdriver/remote/errorhandler.py”,第242行,在check_响应中
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法定位元素:{“方法”:“名称”,“选择器”:“programTypeId”}
(会话信息:无头镀铬=75.0.3770.90)
(驱动程序信息:chromedriver=2.41.578700(2f1ed5f9343c13f73144538f15c00b370eda6706),平台=Linux 4.15.0-50-generic x86_64)
无效凭证
最后一行是返回的响应。因此,可以看到脚本执行不会在exit命令时停止。

因为您正在导入sys,所以只需使用
exit()
结束程序即可

代码:

sys.exit()

更新: 这对我来说没有问题。请尝试此代码并亲自查看

import sys

if sys.argv[1] == 'x':
    print("Im exiting now!")
    sys.exit()
else:
    print("Im not exiting")

print("Here is another string")

我尝试使用无效的凭据。所以,响应被证明是“无效凭证”,正如示例所示,但它也在第44行抛出一个错误,以获取“programTypeId”元素。因此,我认为sys.exit()不起作用。如果
driver.find\u element\u by\u class\u name(“shiftUp”)
引发异常,那么您将捕获到该异常,因此将永远不会调用
sys.exit()。您需要更改逻辑。是否尝试从控制台运行submit.py文件而不是另一个文件?我只想这样。如果存在“shiftUp”类,则只有它应该退出,否则继续执行。它返回了正确的响应,但出现了相同的错误。请不要使用
,除非:
不使用
raise
,否则会隐藏错误