我正在创建一个程序,该程序应该将字典添加到其他(.txt
)文件中的列表中。将文件读入变量后,程序会在文件中自动创建一个列表。第一次将字典保存到文件中没有任何问题,但是第二次将字典变成列表中的列表。第三次添加随机斜杠。
我已经尝试通过关闭文件并以"w"
模式打开文件来擦除文件。该变量不断添加列表。使用truncate()
,一些未知字符会出现在新列表的确切长度上。
我的代码是:
file = "Commands.txt"
commandtext= open("Commands.txt", "r", encoding="utf-8")
text= commandtext.readlines()
#here the file already became a list, even if i dont want it to be.
print(text)
exit= False
while exit == False:
Input = input("For help type help or ? > ")
if Input.lower() == "new":
#vraag om de variabelen
commandVar = input("Enter the new command's name: ")
triggerVar = input("Enter the trigger the PA should react to: ")
responseVar = input("Enter the response the PA should give: ")
#voeg de naam, trigger en response toe aan de dictionary en de list
#Here we overwrite the list with the addition of an extra dictionary
text.append({
"Command Name": commandVar,
"Command Trigger": triggerVar,
"Command Response": responseVar,
})
#now the variable isn't appended to, but contains a list inside of a list
print(text)
#maak het bestand leeg en voeg de commando's toe
#now we append to the file, saving the variable with the distorted list
commandtext.close()
commandfile= open("Commands.txt", "w", encoding="utf-8")
commandfile.write(str(text))
print("Command saved, to clear cache we are stopping the program")
print(text)
exit = True
预期结果是定义命令的列表中的字典,但是对于每个字典,都会创建一个新列表
答案 0 :(得分:0)
事实证明,您需要使用read
而不是readlines
才能删除列表的创建。正如deceze所述:
readlines
不会将该列表解析为列表,它只是返回行列表。
read
不过只是从整个文件中创建一个字符串。