我使用以下代码逐行读取带有主机地址的txt文件,但是当代码创建并写入文件作为日志时,它使用引号和'?'进行写入字符:
代码是这样的:
import getpass
import sys
import telnetlib
user = "cisco"
password = "cisco"
file = open('hosts.txt', 'r')
for line in file:
tn = telnetlib.Telnet(line)
tn.read_until("Username: ")
tn.write(user + "\n")
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("enable \n")
tn.write(password + "\n")
tn.write("sh ver | i revision \n")
tn.write("exit \n")
str_all = tn.read_all()
log = open(line + ".txt","w")
log.write(str_all)
tn.close()
所以创建的文件是:
[temp@ser1 Projeto]$ ls
21.10.176.4?.txt clean_up_819 hosts.txt master.py test1.txt teste.txt
然后,当我使用 cat 时,文件会显示问号:
[noctemp@svcactides Projeto_QoS]$ cat '21.10.176.4
.txt'
有没有办法保存在仅标有 21.10.176.4.txt 的规范化文件中?
答案 0 :(得分:0)
您的文件名没有引号;那些是由你的shell的tab-completion添加的,以保护 所拥有的换行符。
新行来自line
,它可以检测最后一行是否有一个(为了方便起见,重写一个类似的文件)。请参阅How can I remove (chomp) a newline in Python?。