gpt4 book ai didi

python - python函数代码输出错误

转载 作者:行者123 更新时间:2023-12-01 09:10:35 25 4
gpt4 key购买 nike

我有 rootFile = root.json 文件,其内容是

{
"tests":[
{
"test":"test1",
"url":"url1"
},
{
"test":"test2",
"url":"url2"
},
{
"test":"test3",
"url":"url3"
}
]
}

并且我有 python 函数,我正在向其提供要运行的字符串参数

def check(params):
runId=time.strftime("%Y%m%d-%H%M%S")
outputFile=Path(""+runId+".txt")
with open (rootFile) as rj:
data=json.load(rj)
for param in params:
for t in data['tests']:
if t['test'] == param:
urlToUse=t['url']
testrun(param, urlToUse, runId)
else:
nonExistingTest="Test "+param+" Doesn't exist \n"
if not outputFile.exists():
with open(outputFile,"a") as noSuchTest:
noSuchTest.write("Test "+param+" Doesn't exist \n")
elif not nonExistingTest in open(outputFile).read():
with open(outputFile,"a") as noSuchTest:
noSuchTest.write("Test "+param+" Doesn't exist \n")
with open(outputFile,"r") as pf:
message=pf.read()
slackResponse(message)

当我的参数是 root.json 文件中存在的“test1 test2 test3”时,我得到这样的响应

Test test1 passed #this response comes from testrun() function
Test test1 Doesn't exist

Test test2 Doesn't exist
Test test2 passed #this response comes from testrun() function

Test test3 Doesn't exist
Test test3 passed #this response comes from testrun() function

但是当我给出不存在的参数时,输出是正确的。例如

Test test4 Doesn't exist
Test test5 Doesn't exist
Test test6 Doesn't exist
Test test7 Doesn't exist

无法理解为什么它实际存在时发送的内容却不存在

最佳答案

您正在将函数调用传递的每个参数与从 json 文件加载的 tests 数组的每个项目进行比较,启动相应的等效测试,并回显一条消息,说明此类测试确实否则不存在。因为此比较每个参数只会有一次肯定结果,但会根据 root.json 中为每个参数指定的测试次数进行检查,因此输出中将会有很多行指示特定参数与 root.json 中指定的特定测试不匹配。

找到当前参数正在处理的 root.json 条目后,您将需要某种方法来退出循环。我建议将分配给 root.json 中的 tests 的数据结构从数组更改为对象,以测试名称作为键,将其 url 作为值,或者以某种方式过滤与当前参数进行比较的可能测试列表。

考虑将 for param in params: 中的所有内容更改为以下内容:

matching_tests = [t for t in data['tests'] if t['test'] == param]
if len(matching_tests) > 0:
for t in matching_tests:
urlToUse=t['url']
testrun(param, urlToUse, runId)
else:
nonExistingTest="Test "+param+" Doesn't exist \n"
[...]

这样,表示没有测试匹配给定参数的消息最多只会回显一次。

关于python - python函数代码输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51689724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com