簡體   English   中英

Python在f.write中使用變量

[英]Python use variable in f.write

我正在嘗試使用f.write我不確定它是最好的方法,但是我看到了幾個例子。 在這里我要做什么,我有一個包含以下各行的文件。

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

在上述文件中,您可以看到BUILDFILEWARFILESTUDYBUG領域。 我想使用腳本代替手動編輯來編輯它們。 我不明白如何在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)

由於您還在替換字符串中使用了文字{ ,因此您需要將要轉義的{加倍。


對於懶惰的人

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

也可以,但是我不建議這樣做,因為它不太清楚。

在這里write不是問題。 您沒有在數據中放置變量。 (並且您也不用"""關閉字符串)

嘗試:

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

請注意,您必須通過編寫{{}}來引用方括號(否則python會抱怨,因為它認為這是format字段的開始),並查看Python的format函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM