最近写了一个python脚本用到了sys.exit(exit_code) ,遇到一个奇怪的问题。当exit_code=256的时候,预期python调用sys.exit(exit_code) 之后退出进程之后的退出码应该是256,可实际情况退出码是0. 这引发我这边的程序异常,判断任务是运行成功的。
问题的根节就在:sys.exit(256) 的时候python的退出码是0. 我又验证了一下,sys.exit(exit_code) 中的exit_code是256的整数倍的时候,python进程退出码全部是0.
找了一些资料,发现这个是python自身的限制问题。
如下的资料:
http://hk.uwenku.com/question/p-tfxlltaj-bke.html
该如何处理 sys.exit(256) python退出码是 0 的问题? 保证程序能够按预期退出?
做法:
1、可以记录一下退出码到日志,然后让python抛出异常,来退出python进程
2、使用sys.exit(exit_code) 的时候,让exit_code只能是 0 或者 1 ,避免其他退出码情况的出现
3、自己处理一下exit_code=256倍数的情况
4、参考上面的参考资料里面的做法,对exit_code进行移位处理
相关推荐
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别 os._exit() 和 sys.exit() os._exit() vs sys.exit() 概述 Python的程序有两中退出方式:os._exit(), sys.exit()。本文介绍这两种方式的...
主要介绍了Python中exit、return、sys.exit()等使用实例和区别,本文是一个实际项目中的总结,需要的朋友可以参考下
> 3: print “Usage: ” + sys.argv[0] + “file1 file2” sys.exit(-1) file1 = sys.argv[1]file2 = sys.argv[2] list1 = {}for line in open(file1): list1[line.split()[0]] = 1 for line in open(file2): ...
前情回顾 1.epoll模型 : 效率高 , 触发方式更多 2.本地套接字 AF_UNIX 本地两个进程间的消息通信 3.多任务编程 * 并行 和 并发 * 进程 线程 4. 多进程编程 ... os._exit() sys.exit() 8. 孤儿进程和僵尸进程
对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关的几种方法看了并实践了下,同时也记录下。 参考: ...sys.exit(0
源代码#!/usr/bin/env python import sys from lib2to3.main import main sys.exit(main("lib2to3.fixes")) #!/usr/bin/env python import sys from lib2to3.main import main ...sys.exit(main("lib2to3.fixes"))
MacOS下安装xgboost和lightGBM报错,之前安装成功,换了python环境后安装失败 ... sys.argv[0] = ‘”’”’/private/tmp/pip-install-iebpqutp/xgboost/setup.py’”’”’; file=’”’”’/private/tmp/pip-install-
本文实例讲述了Python实现字典去除重复的方法。分享给大家供大家参考,具体如下: #!/usr/bin/env python ... sys.exit() why = 'why.txt' for i in xrange(len(sys.argv)): if(i>=1): other = s
# sys.exit(1) #BASE_PATH=sys.argv[1] BASE_PATH="E:/k" SEPARATOR=";" fh = open("C:\\Users\\lbn\\Desktop\\aa.txt",'w') for dirname, dirnames, filenames in os.walk(BASE_PATH): for ...
部分常用函数:1、sys.argv2、sys.path3、sys.platform4、sys.getwindowsversion()5、sys.version6、sys.exit(n)7、sys.modules8、sys.stdin / stdout / stderr 1、sys.argv 获取当前正在执行的命令行参数的参数...
python中的sys是提供了一... sys.exit([arg]): 程序中间的退出,arg=0为正常退出。 sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。 sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时
安装Scrapy出错,需要安装Microsoft Visual C++ 14.0 ERROR: Command errored out with exit status 1: 'd:\python3.8.1\python.exe' -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'C:\\Users\\z ...
sys.exit(-1) ''' 本策略选取了七个特征变量组成了滑动窗口长度为15天的训练集,随后训练了一个二分类(上涨/下跌)的支持向量机模型. 若没有仓位则在每个星期一的时候输入标的股票近15个交易日的特征变量进行预测,并...
Python基础教程(第⼆版)(第⼗~⼗⼀章... sys.exit(int):⼤多数使⽤默认值0⽤来标识程序成功运⾏,也可以提供字符串信息⽤作错误信息。 3. sys.modules:映射模块名到载⼊模块的字典。 4. sys.path:字符串列表,是
sys.exit([arg]): 程序退出,arg 为 0 正常退出。 sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。 sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中...
",True,(0,0,128),(0,255,0)) #显示文字及坐标 texr=tex.get_rect() texr.center=(10,250) #初始化方向 dire = "right" #设置循环 while 1: #绘制文字 screen.blit(tex,texr) screen.fill((0,0,0)) ...
sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) sys.version 获取Python解释程序的版本信息 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 ...