我试图通过在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
答案 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()