在写一个python程序,用finally处理异常的时候,报了“UnboundLocalError: local variable 'log_f' referenced before assignment”错误。log_f是一个日志文件的对象。概要代码如下

try:

t = paramiko.Transport((host_name,port))

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

t.connect(username=user_name,password=password)

ssh.connect(host_name,port,user_name,password)

sftp = paramiko.SFTPClient.from_transport(t)

log_f = open(log_name,'a')

........................

except Exception,msg:

print "transfile error"

print str(msg)

finally:

log_f.close()

t.close()

ssh.close()

上网查了一下,发现原因如下:如果ssh连接远程服务器出现异常的话,下面的log_f = open(log_name,'a')就不会被执行,及log_f这个文件句柄就不会存在,这样在finally里执行 log_f.close()就会报上面的错误,因为这个文件对象不存在。为了解决这个问题,只需把打开日志文件的操作,放到创建ssh连接前面即可,修改后的代码如下

try:

log_f = open(log_name,'a')

t = paramiko.Transport((host_name,port))

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

t.connect(username=user_name,password=password)

ssh.connect(host_name,port,user_name,password)

sftp = paramiko.SFTPClient.from_transport(t)

........................

except Exception,msg:

print "transfile error"

print str(msg)

finally:

log_f.close()

t.close()

ssh.close()

转载于:https://blog.51cto.com/gtianf/1324372

python UnboundLocalError: local variable 'log_f' referenced before assignment 错误相关推荐

  1. UnboundLocalError: local variable 'end_page' referenced before assignment

    UnboundLocalError: local variable 'end_page' referenced before assignment 错误信息是在指出一个在使用之前没有赋值的局部变量.在 ...

  2. python 错误--UnboundLocalError: local variable 'num' referenced before assignment

    val = 9 def test(flag): if flag: val = 1 else: print("test") return val if __name__ == '__ ...

  3. UnboundLocalError: local variable ‘a‘ referenced before assignment(Python报错解决)

    问题提出 使用Python编程的时候,要注意函数内可以访问全局变量,但不能更新(修改)其值. 比如: a = 10 def sum ( n ) :n += aprint ('a = ', a, end ...

  4. 【debug】UnboundLocalError local variable a referenced before assignment

    1)下面这种情况是不会报错的: >>> x = 10 >>> def bar(): ... print(x) >>> bar() 10 (2)但是 ...

  5. UnboundLocalError: local variable ‘loss’ referenced before assignment解决方法

    UnboundLocalError: local variable 'loss' referenced before assignment 文章目录 UnboundLocalError: local ...

  6. UnboundLocalError: local variable ‘XXX‘ referenced before assignment解决办法

    一.举例: 计算a到10的和 sum=0 def func(a):while a<=10:sum+=aa+=1return sum print(func(9)) 运行结果: UnboundLoc ...

  7. local variable ‘x‘ referenced before assignment错误

    前言:报local variable 'x' referenced before assignment错误 通常是两种原因: 一是函数试图修改全局变量: 二是内部函数试图修改外部函数变量. 先介绍两个 ...

  8. Python 解决 local variable ‘xxx‘ referenced before assignment

    解决 local variable 'xxx' referenced before assignment 在刷leetcode的时候,定义全局变量后在函数中调用总是会出现这个错误,一直没搞明白,现在记 ...

  9. Python 读写当前路径下文件错误 UnboundLocalError: local variable 'file' referenced before assignment

    python读取文件是个比较常用的操作,最近我在读取文件的时候却遇到下面这个问题. 我的代码是: try:file = open("./logs/test")... finally ...

最新文章

  1. Android软键盘调用及隐藏,以及获得点击软键盘输入的字母信息
  2. (转)Silverlight数据校验之INotifyDataErrorInfo
  3. Open***+AD+Google authenticator 安装、配置
  4. tar压缩解压缩命令详解
  5. Linux中wait接口用于延时,linux2.6驱动编写参考
  6. 《剑指Offer》 二叉树的镜像
  7. 2如何看表分区字段_技术分享|Oracle分区技术的实现总结
  8. 申请以及集成 Stripe 的 Alipay 支付方案
  9. 原生JS实现图片懒加载之一:Element.getBoundingClientRect()
  10. android adb 环境变量配置,Windows如何配置Android的ADB环境变量
  11. 能上QQ但不能打开网页——解决办法
  12. 【蓝桥省赛倒计时】B组Java冲刺打卡(三)
  13. 【工具使用系列】PostScript工具 GhostScript,GSview,Epstool,RedMon
  14. darts-clone、RABIT交叉编译
  15. 【2020年高被引学者】 孙剑 旷视科技
  16. 语法分析程序--编译原理
  17. 2022-2028全球与中国高级计划和排程软件市场现状及未来发展趋势
  18. 无人驾驶8: 粒子滤波定位(优达学城项目)
  19. 如何用python开发app —— 前言
  20. git 提交 全部文件

热门文章

  1. H5地理定位获取用户当前位置、城市
  2. shared_ptr 的使用及注意事项
  3. android测试点整理
  4. 大数据应用之双色球算奖平台总体设计大纲篇一
  5. MA5680T跨板聚合
  6. VS2008连接CodePlex的源代码管理服务
  7. Android 中 include的使用
  8. 支持向量机svm的完整实现并配有解析
  9. 原来BCH是这样转给别人的
  10. iOS架构模式-MVP