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
之前声明它,如下所示: