我对python很陌生。我来自 groovy,我用""""
我希望的方式将一些文本写入文件。
python中有没有等效的方法?
请注意,我想创建一个超过 20 行的文件。所以我需要一些简单而优雅的方式。
提前致谢。
目前还不清楚你到底在问什么。
在 Groovy 中使用'''
或"""
处理多行字符串的能力是直接从 Python 借来的,所以当然你可以在 Python 中做同样的事情。
但是,在 Groovy 中使用"
或"""
用于插值字符串的能力是从 sh 借来的,而 Python 没有相同的功能。在 Python 中,'
字符串"
是相同的,插值也不相同。
惯用的 Python 替代方案是format
. 这是str
和unicode
类的一个方法,您可以像这样使用它:
s = """This is a string with a {variable} to fill in.
Here's a {second} one
""".format(variable="field", second="'nother")
如果你把它写到一个文件中,你会得到这个:
This is a string with a field to fill in.
Here's a 'nother one
有很多变化。如果你想通过位置而不是名称传递参数,你可以使用{0}
代替{variable}
——或者,对于按顺序插入它们的简单情况,只需使用{}
(但要小心 i18n)。您还可以将格式信息放入,例如,打印repr
(“您将键入什么来获取此值”)而不是str
(人类可读的表示)。阅读上面链接的文档以获取详细信息。
Python 还有一个较旧的机制,正在逐步淘汰,它使用%
运算符和基于但与 C-style 完全不同的格式规范printf
。例如:
s = """This is a string with a %(variable)s to fill in.
Here's a %(second)s one
""" % {"variable": "field", "second": "'nother"}
同样,有很多可用的变体;再次,阅读上面链接的文档以获取详细信息。printf
但实际上,只有在处理大量旧代码、从Windows 样式或类似格式进行翻译,或者需要在 Python 2.5 或更早版本上运行时才需要使用它。
如果这些都不足以满足您的需求,那么PyPI上有 69,105 个模块(以及 ActiveState 上的配方等)可以完成从尽可能接近 perl 的插值到模板化 HTML 页面的所有工作。
Python 支持"""
转义多行字符串。但是,变量替换不是立即可用的。
multi_line_variable = """This
Is
The
Coolest
Ever."""
如果需要变量替换,可以使用 Python 的printf
格式支持或使用 Jinja 或 Django 模板语言等模板库。
Python 'printf' 格式:
>>> echo """Massive %s!""".format("string")
"Massive string!"
f = open(name_of_file, 'w')
f.writelines(list_of_lines_to_write)
f.close()
或代替writelines()
, 使用f.write("""text_to_write_to_file""")