Python在f.wri中使用变量

2024-06-16 10:22:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用f.write我不确定这是一个最好的方法,但我看到了几个例子。在这里我要做的是,我有一个包含以下行的文件。在

parallel (
{
ignore(FAILURE) {
                          build( "Deploy",  BUILDFILE: "/path/to/build.xml", WARFILE: "http://www.example.com/repo/file.war", STUDY: "EXAMPLE", BUG: "007" )
}},

在上面的文件中,您可以看到BUILDFILEWARFILESTUDY和{}字段。我想用脚本来编辑它们,而不是手动编辑。我不明白如何在f.write()函数中使用变量。按照我的想法去做

^{pr2}$

当我运行这段代码时,它接受我的输入并把它们放在那些指定的字段中,但是一些它是如何不工作的。。我不知道如何使用f.write获取变量并放入这些字段。如果有别的办法请告诉我。。在

编辑

我已经按照用户的建议修改了脚本,但仍然出错,我遗漏了什么???在

#!/usr/bin/python

import sys

BF = raw_input("Enter BUILDFILE name:")
WF = raw_input("Enter WARFILE name:")
STUDY = raw_input("Enter STUDY name:")
BUG = raw_input("Enter BUG name:")
f = open("myfile", "w")

data = """parallel (
{
ignore(FAILURE) {
                          build( "Deploy",  BUILDFILE: "{BF}", WARFILE: "{WF}", STUDY: "{STUDY}", BUG: "{BUG}" )
}},""".format(**locals())

f.write(data)
f.close()

以下错误

Traceback (most recent call last):
  File "./sched.py", line 18, in <module>
    }},""".format(**locals())
KeyError: '\nignore(FAILURE) {\n                          build( "Deploy",  BUILDFILE'

Tags: 文件namebuild编辑inputrawfailureparallel
2条回答

write不是这里的问题。你没有把你的变量放在你的数据里。(也不能用"""来结束字符串)

尝试:

data = """parallel (
{{
    ignore(FAILURE) {{
      build( "Deploy",  BUILDFILE: "{0}", WARFILE: "{1}", STUDY:"{2}", BUG: "{3}" )
}}}}
"""
f.write(data.format(BF, WF, STUDY, BUG))

注意,必须通过写{{}}来引用括号(否则python会抱怨,因为它认为这是格式字段的开头) 看看Python's format function

尝试使用str.format方法设置字符串格式。在这个方法中,可以使用字符串中的{Name}标记作为要替换的标记。还请注意,您需要关闭三引号字符串。在

data = """parallel (
{{
ignore(FAILURE) {{
                          build( "Deploy",  BUILDFILE: "{BF}", WARFILE: "{WF}", STUDY: "{STUDY}", BUG: "{BUG}" )
}}}},""".format(BUG=BUG,BF=BF,WF=WF,STUDY=STUDY)

因为您还在替换字符串中使用了文字{,所以you need to double the ^{} that you want to escape.


对于懒惰的人

^{pr2}$

也可以,但我不建议它,因为它不是很清楚。在

相关问题 更多 >