如何从Python获取退出代码?

时间:2019-02-27 10:20:58

标签: python batch-file

我有一个python代码。我使用cmd文件执行我的python代码。在cmd文件中,我将从python代码中获取错误级别。

infile = "FeatureByte.txt"
Array = ["6J", "yB", "ss", "11"]

with open(infile, "r") as input_file:
    output_list = []
    for rec in input_file.read().splitlines():
       rec = rec[:-3]  
       FBlist = [rec[i:i+2] for i in range(0, len(rec), 2)] 
       output_list.append(FBlist)
       print(output_list)

FBlist_set = set(FBlist)
Array_set = set (Array)

if Array_set & FBlist_set:
    print ("Found")
    exit(0)
else:
    print ("Not Found")
exit(1)

这是我的cmd文件:

set logfile=C:\Users\Log.txt
set PYTHONPATH="C:\Users\AppData\Local\Programs\Python\Python37-32"
set PYTHONEXE="%PYTHONPATH%\Python -B"


"C:\Users\AppData\Local\Programs\Python\Python37-32\python.exe" -B C:\Users\Desktop\Pyth.py

echo %ERRORLEVEL% >> "%logfile%"

从这两个代码中,我总是在Log.txt文件中得到1。

2 个答案:

答案 0 :(得分:0)

我认为问题出在这一行:

if Array_set & FBlist_set:
    print ("Found")
    exit(0)

将其更改为:

if Array_set and FBlist_set:
   print ("Found")
   exit(0)
else:
    print ("Not Found")
exit(1)
您使用的

&是按位运算符,而不是逻辑运算符and。因此,if条件失败,您进入else部分,该部分将exit(1)作为状态代码返回给您。

答案 1 :(得分:0)

注意到对0和1的返回是对roganjosh和Devanshu Misra的解决方案的评论,这是因为您的If语句是由于缩进错误(也许缺少IDE编辑器)而编写的。

您有:

if Array_set & FBlist_set:
    print ("Found")
    exit(0)
else:
    print ("Not Found")
exit(1)

此代码始终以“ 1”退出。在某些情况下,它首先以“ 0”退出,然后以“ 1”退出。

应该是:

if Array_set and FBlist_set:
    print ("Found")
    exit(0)
else:
    print ("Not Found")
    exit(1)                 # <--- this exit(1) should be inside the "else" clause.

这里不需要指出使用“&”而不是“ and”,因为roganjosh前面已经解决了这个问题。无论如何,请注意“ and”的更改颜色。蓝色,表示它已成为if语句的选择参与者。

...但是要注意结果FBlist = [''],因为它会触发错误的肯定FBlist_set并因此以错误的方式退出。

享受;-)