How to edit text

Asked

Viewed 840 times

2

I’m trying to create an option where you can edit the initialization text, but since I already have some extensive lines of code I’m having a hard time finding a way to do it. How to do it (in a simpler form than this code)?

#============<<<código de carregamento de dados>>>============# 
   def ler():                                                 #
       with open('maquina virtual 1ªversão.txt', 'r') as f:   #
        linhas = f.readlines()                                #
        return linhas                                         #
    f.close()                                                 #
                                                              #
if __name__ == "__main__":                                    #
    dados = ler()                                             #
#============<<<código de carregamento de dados>>>============#

#============<<<código de salvação de dados>>>============#
def guardarAlteracao(dado):                               #
    with open('maquina virtual 1ªversão.txt', 'r+') as f: #
        f.write(dado)                                     #
    f.close()                                             #
#============<<<código de salvação de dados>>>============#

#função que inicia a máquina virtual (função que coopera com a função bios()-> se esta tiver sido indevidamente alterada pelo usuário, esta impede o arranque do SO):
global texto

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

#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":
                    imprima = raw_input("Digite o texto que pretende que o programa imprima no início (sugestão: refira os nomes das teclas que iniciam o SO(ENTER) ou o menu da BIOS(B)):")
                    def editar():
                        if imprima == texto:
                            print texto
                        else:
                            print imprima
                    save = raw_input("Guardar alterações?")
                    if save == "sim" or save == "si" or save == "s".lower():
                        guardarAlteracao('Alguma coisa aqui')
                    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
                    quit()
            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()
    elif opcao == "quit":
        arranque()
        bios()
bios()
#from Tkinter import *
#import win32api
#print win32api.GetVolumeInformation("C:\\")
  • When the user enters the BIOS/Advanced/Change boot form/Initial VM presentation menu, he writes a text. And I would like that same text to be printed at the beginning, and to change the string that is there as default (change the string of the text variable).

1 answer

2


In the following passage:

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":
         imprima = raw_input("Digite o texto que pretende que o programa imprima no início (sugestão: refira os nomes das teclas que iniciam o SO(ENTER) ou o menu da BIOS(B)):")
         def editar():
              if imprima == texto:
                  print texto
              else:
                  print imprima

Call the function guardarAlteracao() pointing to the variable imprima as a parameter, thus:

configurar = raw_input("Para configurar as defeinicoes da maquina virtual, escreva a password bitwise para aceder: \n")
if configurar == "0b10b100b110b100":
    avanced = raw_input("As opcoes disponiveis sao: \nAlterar a forma de inicializacao, \nDesinstalar SO, \nCriar permissoes especiais para a VM, \nVer codigo fonte da VM")
    if avanced == "Alterar a forma de inicializacao":
        alterar = raw_input("O que deseja alterar: \nApresentacao inicial da VM, \nApresentar codigo de arranque, \nEditar codigo(aviso: qualquer alteracao incorreta destes pode instabilizar a VM)?")
        if alterar == "Apresentacao inicial da VM":
            imprima = raw_input("Digite o texto que pretende que o programa imprima no inicio (sugestao: refira os nomes das teclas que iniciam o SO(ENTER) ou o menu da BIOS(B)):")
            if (len(imprima) > 0):
                guardarAlteracao(imprima)

Tip: For better viewing indent the code and when to ask the user to enter some value, choose which option, do not ask the user to enter words(type: Change the boot way, Uninstall OS, Create special permissions for the VM, View VM source code) but yes with letters indicating the desired option, it makes it much easier.

To read the saved text call the function ler(), thus:

dados = ler()
dados = "".join(str(s.replace('[', '').replace(']', '')) for s in dados)
print(dados)
  • And how can I remove the straight parentheses at the beginning (and delete the string that is in the text variable)?

  • When the program starts the string I wrote but with straight parentheses appears and then also prints the string of the text variable.

  • ['B-BIOS ENTER-SO'] Welcome to the virtual machine. Press ENTER to start the OS or B to access the setup Utility BIOS menu. (unable to indent in comment). B-BIOS ENTER-SO

  • Gave this error: Traceback (Most recent call last): File "C: Documents and Settings Cristina Desktop virtual machine 1st version.py", line 10, in <module> data = data.replace('[', ''). replace(']', ') # Attributeerror: 'list' Object has no attribute 'replace'

  • 1

    Thanks(also for the patience) ;) With a small change later I was able to print only the data string.

Browser other questions tagged

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