當使用字典值時嘗試創建字符串時出現奇怪的問題。基本上,我有一個函數打開文件,讀取一行,並將它在該行中找到的值存儲在字典中。然後,它將這些值發送到外部程序。下面是代碼:使用字典值時的字符串格式問題
def createLandscapes(file):
landscapeParameters = {'FILE': "NULL",
'N': "NULL",
'K': "NULL",
'NUM': "100"}
for line in file:
if line == "END LANDSCAPES\n":
break
else:
parameters = line.replace(" ", '').split(",")
for parameter in parameters:
parameter = parameter.split("=")
if parameter[0] not in landscapeParameters:
malformedFile()
landscapeParameters[parameter[0]] = parameter[1]
for key in landscapeParameters:
if landscapeParameters[key] == "NULL":
malformedFile()
# This print statment is for diagnostic purposes
print("./generateScoreTables {} {} {} {}".format(landscapeParameters['FILE'],
landscapeParameters['N'],
landscapeParameters['K'],
landscapeParameters['NUM']))
os.system("./generateScoreTables {} {} {} {}".format(landscapeParameters['FILE'],
landscapeParameters['N'],
landscapeParameters['K'],
landscapeParameters['NUM']))
爲了使這個很清楚,該功能會查找單一系列的參數輸入,逗號分隔線,在
FILE=example, N=20, K=5, NUM=100
形式它需要這些輸入並覆蓋landscapeParameters
中的默認輸入(如果指定),並使用landscapeParameters
中的值調用外部程序。
奇怪的是,當我使用landscapeParameters
中的默認參數時,字符串格式似乎不能正常工作。我的意思是,如果函數讀取行:
FILE=example, N=20, K=5, NUM=100
一切正常,並且打印語句打印:
./generateScoreTables example 20 5 100
但是,如果函數讀取行:
FILE=example, N=20, K=5
我在哪裏離開NUM
出來使用默認參數,我得到以下輸出:
./generateScoreTables testland1 15
0 100
Segmentation fault
sh: 2: 0: not found
它似乎格式不正確格式化此字符串,但我不明白爲什麼。有沒有人對此有所瞭解?
歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在發佈您的MCVE代碼並準確描述問題之前,我們無法爲您提供有效的幫助。 我們應該能夠將發佈的代碼粘貼到文本文件中,並重現您描述的問題。 – Prune
@Prune你想補充什麼?這個問題應該是顯而易見的,並且容易從所提供的信息中重現。 – user1105224
附上產生錯誤的演示輸入文件 - 可能只有兩行。將您的代碼編輯爲將重現錯誤的*最小*代碼。也許它不過是一個單線電話。 – Prune