如何在文件中连接字符串和变量?

时间:2015-08-27 03:37:01

标签: python file-io input concatenation file-writing

我开始使用devops和Python编码(我是网络工程师,而不是开发人员)所以如果我的问题太基础,我会提前道歉。

我正在编写一个将完全限定的域名转换为IP地址列表的代码,然后程序应该将这些ips写入一个文件,将每个ips插入另一行,最重要的是,每个新行还应包含一些预定义的字符串"网络设备命令"。

然后,我的代码将获取此文件,连接(使用NETCONF)到某些网络设备并执行文件中的命令。

现在,我的代码是:

import os
import socket
from netconf.os import Device
from netconf.utils.config import Config

# Variables Declaration Section
domain = raw_input('Enter the domain name you want to resolve: ')
device_management = raw_input('Enter the device Management IP address: ')
device_user = raw_input('Enter the device admin account: ')
device_pass = raw_input('Enter the device admin account password: ')

# DNS Resolution Section
ip_list = list()
try:
    ip_list = socket.gethostbyname_ex(domain)
    print "Resolving addresess"
except socket.gaierror, err:
    print "Domain resolution error, please check network connectivity"
    ip_list = ()
if ip_list != ():
    print "Domain name resolved"
else:
    print "Error: List of IP address is empty"
    exit()

# Initial list clean up section (ip_list contains ips and words, need to filter)
cleaned_ip_list = ip_list[2]

# Creating the Device Template Config file
file = open("device_config.txt", "w")
for i in range(len(cleaned_ip_list)):
    a=None
    file.write( "'set address '+'a'+(a+1)+' '+cleaned_ip_list[i]\n")
file.close()

我现在遇到的问题是在file.write行中,它在代码中编写简单的行,而不是插入变量并将它们与字符串连接起来。

我尝试了几种不同的组合但没有成功。

3 个答案:

答案 0 :(得分:0)

您当前正在编写单个字符串文字而不是连接字符串。我建议使用format()方法。

file.write('set address {}{} {}\n'.format(a, a+1, cleaned_ip_list[i]))

大括号{}将替换为format()的相应参数。

答案 1 :(得分:0)

让我们看一下问题所在:

file.write( "'set address '+'a'+(a+1)+' '+cleaned_ip_list[i]\n")

您正在尝试编写String的部分内容,其中散布着更改的值(variables)。

file.write( "set address " + a + (a+1) + " " + cleaned_ip_list[i] + "\n")

答案 2 :(得分:0)

file.write('set address ' + a +' '+ (a + 1) +' '+cleaned_ip_list[i] +'\n' )

我认为应该是这样的。