我已经定义了一个“值”,我有一个IF语句,如:
value = any ("1" in valueMaj for valueMaj in list)
if value == False:
我可以这样做,所以我的print语句打印出所有不正确的,而不仅仅是一个。示例:
INPUT
print("FILE NOT MATCH:", file)
输出
FILE NOT MATCH: filenumber1.txt
但是,我希望打印所有不匹配的东西,而不是停止循环。
答案 0 :(得分:3)
如果您需要所有不匹配的值,请不要使用any()
。使用带有过滤器的列表推导来创建列表:
not_matching = [valueMaj for valueMaj in some_list if '1' not in valueMaj]
if not_matching:
print('The following files do not match:', ', '.join(not_matching))
或使用循环打印出单个文件。
any()
会短路并停止迭代;它仅对有效测试序列的条件有用,而不是用于过滤该序列。
答案 1 :(得分:0)
import shutil
import os
import subprocess
import sys
import glob
import re
import fileinput
root_dir = os.getcwd()
uop_dir = root_dir + "\\UoP"
# .h files
print ("Searching for .h files: " + uop_dir)
for root, subfolders, files in os.walk(uop_dir):
if root.endswith("WHATEVER YOU WANT HERE"):
if myfile.endswith(".h"):
print (root + "/" + myfile)
for file in myfiles:
for line in open(file):
line = line.rstrip()
if re.search('VERSION\s+("\d+\.\d+")$', line):
version = re.findall("\d+\.\d+" , line)
# version.append(file)
if re.search('VERSION\s+("\d+\.\d+")$', line):
valueMaj = re.findall('\d+\.', line)
###print(valueMaj)
#FINDS MINOR NUMBER
if re.search('VERSION\s+("\d+\.\d+")$', line):
valueMin = re.findall('\.\d+' , line)
###print(valueMin)
value = [valueMaj for valueMaj in file if ('1.7') not in valueMaj]
if value:
###print("FILE NOT MATCH:", file, "\nROOT: " root, "\nVERSION: ", *version)
print("FILE NOT MATCH:", file , "\nVERSION: ", version, "\nMAJOR_NUMBER:", (valueMaj),
"\nMINOR_NUMBER: ", ''.join(valueMin))