['UnboundLocalError', [“local variable 'x' referenced before assignment”]]
我试图调用其他程序中的函数,得到如下错误:
1 | [\'UnboundLocalError\', ["local variable \'x\' referenced before assignment"]] |
请帮助
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | connect FSN1 @FSN1 @MANTISPORT connect FSN2 @FSN2 @MANTISPORT * from commonFunctions import * * import os * import sys * import shutil import io *: #********* Common Variables********** exactShareNameFound = False def findExact(logMessage, share): f = open('logFile', 'w+') f.write(logMessage) for line in f: if line.find('%s')%(share) >= 0: exactShareNameFound = True if exactShareNameFound: x+= line if line.find('Share Name')>=0: if line.find('%s')(share)<0: exactShareNameFound = False else: print('ERROR!!') else: print('Error in Executing Loop') return x |
在Python和几乎所有其他编程语言中,除非声明变量,否则无法更改变量中的值。
在您的代码中:
您没有声明X,但您在上面的行中引用了它。
如果要在
1 | x = '' |
您的代码正在操作一个变量
1 | if exactShareNameFound: x+= line |
在函数顶部添加以下行:
1 | x = '' |
无论如何,代码不会像当前写入的那样工作,因为它试图从以"写入和读取"模式打开的文件中读取;文件指针被设置为文件的结尾,因此,如果不先查找strat,从中读取的数据将永远不会返回数据。
该功能还可以进行更多的清理:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | def findExact(logMessage, share): share = str(share) with open('logFile', 'w+') as f: f.write(logMessage) f.seek(0) lines = [] found = False for line in f: if share in line: found = True if found: x.append(line) if 'Share Name' in line: if share not in line: found = False continue return ''.join(lines) |
我不清楚什么时候应该发出"错误"消息;在任何情况下,使用