Python [&&x27;UnboundLocalError&&x27;,[“赋值前引用的局部变量&&x27;x&&x27]]
我试图调用其他程序中的函数,得到如下错误:Python [&&x27;UnboundLocalError&&x27;,[“赋值前引用的局部变量&&x27;x&&x27]],python,python-2.7,Python,Python 2.7,我试图调用其他程序中的函数,得到如下错误: [\'UnboundLocalError\', ["local variable \'x\' referenced before assignment"]] 请帮忙 connect FSN1 @FSN1 @MANTISPORT connect FSN2 @FSN2 @MANTISPORT * from commonFunctions import * * import os * import sys * import shut
[\'UnboundLocalError\', ["local variable \'x\' referenced before assignment"]]
请帮忙
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
连接FSN1@FSN1@MANTISPORT
连接FSN2@FSN2@MANTISPORT
*从commonFunctions导入*
*导入操作系统
*导入系统
*进口舒蒂尔
输入io
*:
#*********公共变量**********
exactShareNameFound=False
def findExact(日志消息、共享):
f=打开('日志文件','w+')
f、 写入(日志消息)
对于f中的行:
如果line.find(“%s”)%(共享)>=0:exactShareNameFound=True
如果找到ExactShareName:x+=行
如果line.find('Share Name')>=0:
如果line.find(“%s”)(share)您的代码正在操作变量x
,而从未首先设置它:
if exactShareNameFound: x+= line
在函数顶部添加以下行:
x = ''
x = ''
无论如何,代码都不会像当前编写的那样工作,因为它试图从以“写和读”模式打开的文件中读取;文件指针设置为文件的结尾,因此,如果不首先查找strat,从中读取的数据将永远不会返回数据
该功能可能需要进行更多的清理:
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)
我不清楚何时应该发出“错误”消息;使用raisevalueerror('error message')
而不是大声的“print”语句在任何情况下都可以提前退出函数。在python和几乎所有其他编程语言中,除非声明变量中的值,否则无法更改该值
在代码中:
如果找到ExactShareName:x+=行
您没有声明x,但您在上面一行中引用了它
如果要将line
的值附加到x
,请在使用变量x
之前声明它,如下所示: