Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 测试运行失败:局部变量'';分配前参考_Python_Sikuli - Fatal编程技术网

Python 测试运行失败:局部变量'';分配前参考

Python 测试运行失败:局部变量'';分配前参考,python,sikuli,Python,Sikuli,长期读者,第一次海报 我一直致力于在我的工作场所建立第一套自动化系统,同时自学我的第一门编程语言。最终目标是建立一个Sikuli脚本,以便在夜间运行测试 我不断地遇到错误,感觉自己对python的基本原理缺乏理解,周围也没有人教我 函数do_math解析.csv文件,进行一些计算,并以元组形式返回这些变量。然后,我将这些结果分配到一个变量中,并尝试比较它们,但我一直遇到: Test Run Failed: local variable 'D2LAverage' referenced before

长期读者,第一次海报

我一直致力于在我的工作场所建立第一套自动化系统,同时自学我的第一门编程语言。最终目标是建立一个Sikuli脚本,以便在夜间运行测试

我不断地遇到错误,感觉自己对python的基本原理缺乏理解,周围也没有人教我

函数
do_math
解析.csv文件,进行一些计算,并以元组形式返回这些变量。然后,我将这些结果分配到一个变量中,并尝试比较它们,但我一直遇到:

Test Run Failed: local variable 'D2LAverage' referenced before assignment
我曾尝试在许多不同的地方分配d2lavarge,使其成为全局的,返回列表与元组,但它总是被卡住

-调用上面的
dou\u math

  do_math()
  results = do_math()
  
  # Specify the path
  path = 'C:/Users/AeosFactory/Desktop/'

  # Specify the file name
  file_name = "Latency_Results" + "_" + str(datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S')) + ".txt"

  # Create a file at specified location and do comparison
  with open (os.path.join(path, file_name), 'a+') as Latency_Results:
    if results[0] <= 85:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
    else: 
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
    if D2Lstd <= 10:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n')
    else:
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n') 

    if L2DAverage <= 85:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n')
    else:
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n') 
    if L2Dstd <= 10:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')
    else:
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')
do_math()
结果=做数学()
#指定路径
路径='C:/Users/AeosFactory/Desktop/'
#指定文件名
file_name=“Latency_Results”+“”+str(datetime.datetime.now().strftime(“%Y-%m-%d_%H_%m_%S”)+”.txt
#在指定位置创建文件并进行比较
以open(os.path.join(path,file_name),“a+”作为延迟结果:

如果结果[0](全局变量除外),则python文件之间不会共享变量。如果您查看
start\u script.py
中的内容,您永远不会在任何地方定义D2LAverage。当您试图在if语句中使用它时,会引发一个错误,因为Python“不知道您在说什么”。我认为让您感到困惑的是,返回值的名称暴露在调用函数的范围内。返回的只是返回值本身

do_math()
的末尾有一行
return D2LAverage、D2Lstd、L2DAverage、L2Dstd
,因为Python只允许每个函数返回一个值,这些值被打包到一个元组中

start\u script.py
中调用
do\u math()
两次

  • 一次,不捕获返回值
  • 一旦将返回值分配给
    结果
如果您只关心函数的结果,那么可能需要删除对它的第一次调用


要访问由
do_math()
返回的单个值,您可以通过将
results[0]
索引到元组直接访问所需值,或者使用元组解包将4个返回值分配给单个变量,类似于
D2LAverage、D2Lstd、L2DAverage、,L2Dstd=results

在为
结果[0]
执行此操作后,您似乎忘记了为
结果编制索引。您可以尝试保持这种方式,方法是按如下方式解压缩结果:
D2LAverage,D2Lstd,L2DAAverage,L2Dstd=results
调用
do\uMath
后替换
结果[0]
带有
D2LAverage
  do_math()
  results = do_math()
  
  # Specify the path
  path = 'C:/Users/AeosFactory/Desktop/'

  # Specify the file name
  file_name = "Latency_Results" + "_" + str(datetime.datetime.now().strftime('%Y-%m-%d_%H_%M_%S')) + ".txt"

  # Create a file at specified location and do comparison
  with open (os.path.join(path, file_name), 'a+') as Latency_Results:
    if results[0] <= 85:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
    else: 
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Average:" + " " + str(round(D2LAverage,2)) + '\n')
    if D2Lstd <= 10:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n')
    else:
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, D2L Standard Deviation:" + " " + str(round(D2Lstd,2)) + '\n') 

    if L2DAverage <= 85:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n')
    else:
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Average:" + " " + str(round(L2DAverage,2)) + '\n') 
    if L2Dstd <= 10:
      Latency_Results.write("Pass" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')
    else:
      Latency_Results.write("Fail" + " - " + "4 Screens, Image Mode 1, Surgery, Live, HC, L2D Standard Deviation:" + " " + str(round(L2Dstd,2)) + '\n' + '\n')