我正在尝试使用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'
答案 0 :(得分:5)
尝试使用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())
也可以,但我不会建议,因为它不太清楚。
答案 1 :(得分: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