Saving User Changes

2

I've been researching how to save user changes (with raw_input ) in Python and I did not find something that made it clear to me.

What is the best way to do this (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 edit the text, the program is supposed to write the same text.

(% w / o% is not complete)

    
asked by anonymous 11.06.2014 / 12:50

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 for reading and writing , write() writes the information to the file.

In the snippet 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 script you can call a function that reads the file, like this:

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()
    
11.06.2014 / 13:50