我有一个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。
答案 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并因此以错误的方式退出。
享受;-)