我正在尝试使用 f.write 我不确定这是最好的方法,但我看到了几个例子。这是我想要做的,我有一个包含以下几行的文件。
parallel (
{
ignore(FAILURE) {
build( "Deploy", BUILDFILE: "/path/to/build.xml", WARFILE: "http://www.example.com/repo/file.war", STUDY: "EXAMPLE", BUG: "007" )
}},
在上面的文件中,您可以看到BUILDFILE、WARFILE、STUDY 和BUG 字段。我想使用脚本代替手动编辑来编辑它们。我不明白如何在 f.write() 函数中使用变量。按照我正在尝试做的事情
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" )
}},
f.write(data)
f.close()
当我运行这段代码时,它接受我的输入并放入那些指定的字段,但有些它不起作用..我不知道如何使用 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'
请您参考如下方法:
尝试使用 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.
对于懒惰的人,
data = """parallel (
{{
ignore(FAILURE) {{
build( "Deploy", BUILDFILE: "{BF}", WARFILE: "{WF}", STUDY: "{STUDY}", BUG: "{BUG}" )
}}}},""".format(**locals())
也可以,但我不建议这样做,因为它不太清楚。
