Python:将多个str.format()行写入文件?

Car*_*tem 0 python

for host in platforms:
    f = open(host, 'w')
    f.write('define host {\n')
    f.write('    host_name            {}\n'.format(host))
    f.write('    alias                {}\n'.format(host))
    f.write('    display_name         {}\n'.format(host))
    f.write('    address              {}\n'.format(str(socket.gethostbyname(host))))
    f.write('    use                  linux-server\n')
    f.write('    register             1\n')
    f.write('}\n')
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?是否有一种简单的方法来格式化所有这些字符串但只进行一次写入方法调用?如果以上被认为是最好的做法,那么看起来好像它可能更漂亮.

Kei*_*ith 5

您可以在长三引号字符串中使用命名替换.

def print_host(host, address):
    f = open(host, 'w')
    f.write("""define host {{
        host_name            {host}
        alias                {host}
        display_name         {host}
        address              {address}
        use                  linux-server
        register             1
    }}\n""".format(host=host, address=address))

print_host("myhost", "10.10.10.10")
Run Code Online (Sandbox Code Playgroud)

但请注意,你必须加倍花括号才能在这里逃避它们.