Skip to main content
 首页 » 编程设计

Python 在 f.write 中使用变量

2025年05月04日17leader

我正在尝试使用 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()) 

也可以,但我不建议这样做,因为它不太清楚。