变量列表在列表内创建列表

时间:2019-06-05 07:58:05

标签: python

我正在创建一个程序,该程序应该将字典添加到其他(.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

预期结果是定义命令的列表中的字典,但是对于每个字典,都会创建一个新列表

1 个答案:

答案 0 :(得分:0)

事实证明,您需要使用read而不是readlines才能删除列表的创建。正如deceze所述:

  

readlines不会将该列表解析为列表,它只是返回行列表

read不过只是从整个文件中创建一个字符串。