您的位置:首页 > 编程语言 > Python开发

32位python的bug:os.system返回码一直为0

2016-09-26 20:40 435 查看
32位python在windows上调用命令行(os.system或subprocess.Popen)。执行后,如果返回码太大,python取得的返回值也是0。此时无法判断执行成功还是失败,这个是32位python的bug。

以时间同步命令w32tm位例子

在cmd上执行

C:\WINDOWS\system32>w32tm /resync
发生下列错误: 服务尚未启动。 (0x80070426)

C:\WINDOWS\system32>echo %errorlevel%
-2147023834


在64位python上执行

>>> os.system("w32tm /resync")
发生下列错误: 服务尚未启动。 (0x80070426)
-2147023834


在32位python上执行

>>> os.system("w32tm /resync")
发生下列错误: 服务尚未启动。 (0x80070426)
0


注意:此时命令执行错误返回码也是0。

通常成功的返回码才是0,这里执行错误返回码也是0。当要判断执行成功还失败时,这里便是个坑。

os.system文档

https://docs.python.org/2/library/os.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  system popen