Python - 在file.write()中使用for循环

时间:2017-03-12 16:38:23

标签: python

我试图通过在file.write中运行for循环来打印所有端口,但它给我下面的语法错误。

 ports = ["123", "234"] 
 # mentioned only 2 ports but I have more than 200 ports
 f = open("test.html", "w")
 f.write( for i in range(0, len(port)):
 File "<stdin>", line 1
 f.write( for i in range(0, len(port)):
           ^
 SyntaxError: invalid syntax

4 个答案:

答案 0 :(得分:1)

使用for循环包装文件写入操作将解决您的问题。

{{1}}

答案 1 :(得分:1)

for循环需要在外面:

with open("test.html", "w") as f:
    for i in range(0, len(port)):
        f.write(i + '\n')

我建议您使用with open…,这样一旦循环结束,文件就会自动关闭。

答案 2 :(得分:0)

是的,那条线是各种各样的错误。

你想在函数调用里面列表理解为什么?

将循环放在外面

for port in ports_list:
    f.write(port + '\n') 

但您可以将列表加入一个字符串

f.write('\n'.join(ports_list)) 

答案 3 :(得分:0)

根据您的尝试,您似乎尝试使用理解并在文件上调用写入进行组合。您获得的语法错误是因为您正在尝试执行的操作明显被误用。你实际上想要做的事情可能是这样的:

/test

然而, 这也是错误的 。您正在使用列表理解来解决其副作用,这是对列表理解的一种非常糟糕的用法。您正在创建一个无用的列表只是为了尝试保存代码行。

相反,如其他答案所述,迭代并调用write:

[f.write(x) for x in port]

为了使代码更加健壮,额外的好处是为文件管理器使用上下文管理器,以便在使用后关闭文件。目前,您应该明确地在您的文件上调用for port in ports: f.write("{}\n".format(ports)) 。所以,你可以这样做:

f.close()