Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
groovy是否有任何等价物&引用&引用;用python?_Python_File - Fatal编程技术网

groovy是否有任何等价物&引用&引用;用python?

groovy是否有任何等价物&引用&引用;用python?,python,file,Python,File,我对python非常陌生。我来自groovy,我使用“以我希望的方式将一些文本写入文件 python中有没有与之等效的方法 请注意,我想创建一个有20多行的文件。所以我需要一些简单优雅的方式 提前谢谢 f = open(name_of_file, 'w') f.writelines(list_of_lines_to_write) f.close() 或者使用f.write(“'text\u to\u write\u to\u file”“”)代替writelines(),Python支持“转义

我对python非常陌生。我来自groovy,我使用
以我希望的方式将一些文本写入文件

python中有没有与之等效的方法

请注意,我想创建一个有20多行的文件。所以我需要一些简单优雅的方式

提前谢谢

f = open(name_of_file, 'w')
f.writelines(list_of_lines_to_write)
f.close()
或者使用
f.write(“'text\u to\u write\u to\u file”“”)代替
writelines()

Python支持
转义多行字符串。但是,变量替换不是立即可用的

multi_line_variable = """This
Is   
The
Coolest
Ever."""
如果需要变量替换,可以使用Python的
printf
格式支持,或者使用Jinja或Django模板语言等模板库

Python“printf”格式:

>>> echo """Massive %s!""".format("string")
"Massive string!"

不清楚你到底在问什么

Groovy中对多行字符串使用
'
'
的功能是直接从Python中借用来的,因此您当然可以在Python中执行完全相同的操作

但是,在Groovy中对插值字符串使用
的功能是从sh借用的,Python没有相同的功能。在Python中,
字符串是相同的,插值也不相同

惯用的Python替代方法是。这是
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或更早版本上运行时,才需要使用此选项


如果这些都不足以满足您的需要,那么在ActiveState上有69105个模块(以及食谱,等等)用于完成从尽可能接近perl的插值到模板化HTML页面的所有操作。

Groovy的多行字符串三引号语法实际上是从Python借用的,所以如果这就是您想要的,那么就完成了。如果您想要
插值(在Groovy中既可以使用
也可以使用
”),这是从sh借来的,Python不这么做,所以您需要使用其中一种替代方法。您想要什么?首先,使用现代方法比使用旧式更好。其次,正如所写的,答案听起来像是建议使用一个名为
printf
的函数,它不存在,而不是
%
运算符,然后将其称为“
printf
格式支持”有点误导,因为它与
printf
的差异足以导致混淆。
writelines
有点误导,因为它实际上不会写入EOL…(尽管通常,我同意“行”列表比多行字符串更具uesful/可读性)