How to save user changes

Asked

Viewed 460 times

2

I’ve been searching how to save user changes (with raw_input) in Python and I did not find something that clarified me.

What is the best way to do it (even after closing the program)?

Example:

def arranque():
    machine = raw_input("Bem vindo à màquina virtual(VM). Prima ENTER para iniciar o SO  ou prima B para entrar no menu da BIOS.")
if machine == "B".upper():
    print "A iniciar a BIOS..." 
for i in range(1000):
    print "..."
arranque()
# else:
    #storm()

#funções auxiliares--> bios:
def editor():
    global texto
    texto = raw_input("digite o texto que quer que o menu principal imprima:")

def password():

#função principal(1ª)--> bios:
def bios(): 
    print "------------------ \n" 
    print "BIOS setup utility \n"
    print "------------------"
    opcao =raw_input("Está no menu da BIOS. Escolha o que pretende aceder: Informações do sistema, Data, Avançadas(secção ainda a concluir), Configurações do SO (escreva quit para voltar ao menu e back se quiser voltar ao menu principal da BIOS) \n")
    if opcao == "Informações do sistema":
        print "--------------" 
        print "Maquina virtual"
        print "--------------" 
        print "Versão: 1.0v 32bit \n Data da criação: 07/06/14 \n Compatível com Windows XP, Windows Vista, Windows 7, Windows 8, Unix, Linux, Ubuntu e Mac OS"
        print "Todos os direitos reservados © 2014"
        rebobinar = raw_input("")
        if rebobinar == "back":
            bios()
    elif opcao == "Data":
        print "--------------"
        print "Data"
        print "--------------"
        print "Sistema Operativo(simulado): BITsky one® \nInterface: Literal (e GUI nas próximas atualizações) \nLinguagem de programação predefinida: Python"
        import win32api
        path = "C:/"
        info = win32api.GetVolumeInformation(path)
        print( "Número da série do disco rígido: = %d" % info[1] )
        rebobinar = raw_input("")
        if rebobinar == "back":
            bios()
    elif opcao == "Avançadas":
        print "--------------"
        print "Avançadas"
        print "--------------"
        configurar = raw_input("Para configurar as defenições da máquina virtual, escreva a password bitwise para aceder: \n")
        if configurar == "0b10b100b110b100":
            print "As opções disponíveis são: \nAlterar a forma de inicialização, \nDesinstalar SO, \nCriar permissões especiais para a VM, \nVer código fonte da VM"
            avanced = raw_input("")
            if avanced == "Alterar a forma de inicialização":
                alterar = raw_input("O que deseja alterar: \nApresentação inicial da VM, \nApresentar código de arranque, \nEditar código(aviso: qualquer alteração incorreta destes pode instabilizar a VM)?")     
                if alterar == "Apresentação inicial da VM":
                    editor()
                    save = raw_input("Guardar alterações?")
                    if save == "sim" or save == "si" or save == "s".lower():
                        #como guardar?
                    rebobinar = raw_input("")
                    if rebobinar == "back":
                        bios()
                elif alterar == "Apresentar código de arranque":
                    #código ainda não concluído
                    if rebobinar == "back":
                        bios()
                elif alterar == "Editar código":
                    #código ainda não concluído
            elif avanced == "Desinstalar SO":
                deletar_so = raw_input("Tem mesmo a certeza (atenção: depois não pode restaurar e pode perder dados)?)")
                if deletar_so = "sim" or deletar_so == "yes":
                    for i in range(1234):
                        print "A desinstalar o SO..."
                    #função bitsky_one--> deletar
                    print "SO desinstalado."
            elif avanced == "Criar permissões especiais para a VM":
                password()
bios()

After the user edits the text, the program is supposed to save the same text.

(The def password() is not completed )

  • How do you feel about keeping it? Like in a file?

  • Yes, so that when you open the program again print the same value.

1 answer

2


You can create a function that writes changes to a file:

def salvarAlteracao(arquivo, texto):
    with open(arquivo, 'r+') as f:
        f.write(texto)
    f.close()

The r+ is to open the file to reading and writing, the write() writes the information to the archive.

In the section where the user is asked to save or not, you can call the function like this:

# raw_input() Python 2.x / input() Python 3
save = raw_input("Deseja salvar as alteracoes? [S/N]: ")

if save.lower() == "sim" or save.lower() == "si" or save.lower() == "s":
    salvarAlteracao("Informe as alteracoes aqui")

To read the file information at the beginning of the script you can call a function that reads the file, so:

def lerInformacoes(arquivo):
    with open(arquivo, 'r') as f:
        linhas = f.readlines()
        return linhas
    f.close()   


if __name__ == "__main__":
    info = lerInformacoes()

    // Use a variável "info" aqui...
    bios()
  • Thank you ;) I’ve been learning python for about 2 months and I was trying to figure out how it worked. Now I realize.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.