功能无法完成

时间:2013-12-27 16:15:27

标签: python

我正在编写一个脚本来登录交换机,将配置写入文件,然后重命名该文件。我有部分工作。问题是我无法弄清楚如何在同一个函数中获取所有部件,以便我可以在设备列表中使用该功能。我在'for line in f'语句中得到一个未打开的文件。当我看到文件仍然打开时。 我已经尝试编写一个函数来重命名自己工作的文件,但不能在这个脚本中与其他部分一起使用。 我有另一个我编写的脚本,它在函数之外有重命名部分,但如果使用Exscript'quickstart'模块调用多个主机,则无法重命名该文件。 谢谢你的帮助,

from Exscript.util.start import quickstart
import os
import datetime
import time


time = datetime.datetime.now().strftime("%d-%m-%Y")
tm = 'c:/test/tmp.txt'


def do_something(job, host, conn):

    f = open(tm, 'w+') #opens File with read and write permissions  
    conn.execute('term len 0')
    conn.execute('sh run')
    f.write(conn.response)
    conn.execute('quit')

#this is the part where the error comes
    for line in f:
        if "hostname" in line:
        host = line.strip()




    test = 'c:/test/' + host[9:] + 'on' + time + '.txt'
    os.rename(tm, test) 

quickstart('ssh://x.x.x.x', do_something)

2 个答案:

答案 0 :(得分:0)

根据manual,模式w+截断(删除所有内容)文件。如果要在不破坏其内容的情况下打开文件进行读取和写入,请使用模式r+a+

:: edit ::注意,我不确定这在Windows上是如何工作的。

答案 1 :(得分:0)

您必须使用f.seek(0)在文件开头测试文件指针。或者首先写入文件然后关闭它然后重新打开它以供阅读。但是你根本不需要文件 - 你也可以使用本地变量。