Ir para conteúdo
Fórum Script Brasil
  • 0

Lista em arquivo de texto


Acneto

Pergunta

Boa noite.

Estou treinando um pouco de listas e lembrei de um arquivo que era muito chato de ficar configurando, então decidi criar um editor, assim já ficando como um objetivo para eu ir aprendendo.

O editor terá que abrir o arquivo de texto onde contém as seguintes linhas.

    1       "mapa1"    "mapa1"        2000    50    50
    2       "mapa2"    "mapa2"        2000    10    17
    3       "mapa3"    "mapa3"        2000    10    27
    4       "mapa4"    "mapa4"        2000    20    22

Então pensei em usar listas, porque como vou editar, preciso do acesso a linha 1 e nela percorrer os índices para alterar.

Ou seja, preciso ter acesso ao índice por linhas 1, 2, 3 e depois escolher os índices de cada linha.

O código que fiz tá precário ainda, mas já notei que saiu errado com uso de listas.

 

// ----------------------------------------------------------------------------------
//MoveID      ServerName           ClientName             Zen        Level       Gate
// ----------------------------------------------------------------------------------
['1', '       ', 'Mapa1', '         ', 'Mapa1', '               ', 2000, '     ', 220, '     ', 50]

 

Comparando com o primeiro, esse saiu com [  ], virgulas e aspas em todos os dados, onde preciso de aspas apenas nas strings, (mapa), sem virgulas e sem colchetes

O código até o momento:

 

dados = '''// ----------------------------------------------------------------------------------
//MoveID      ServerName           ClientName           Zen        Level       Gate
// ----------------------------------------------------------------------------------\n'''

move = [0,"       ", "", "         ", "", "               ", 0, "     ", 0, "     ", 0]
arquivo = open("move.txt", "w")
move[0] = input("Digite o numero da linha: ")
move[2] = str(input("Digite o nome do mapa Server: "))
move[4] = str(input("Digite o nome do mapa Cliente: "))
zen = int(input("Digite o zen: "))
move[6] = zen
level = int(input("Digite level necessário: "))
move[8] = level
gate = int(input("Digite o gate: "))
move[10] = gate
mapa = str(move) # Converti para string senão dava erro na hora de gravar o arquivo.
print(mapa)
arquivo.write(dados)
arquivo.write(mapa)
arquivo.close()

 

Neste caso usando lista, dicionário, o que seria melhor?

Editado por Acneto
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

ArteEN, obrigado por direcionar um caminho.

Bati cabeça, mas melhorei um pouco, agora volta gravado com os espaços definidos e tudo.

Uma coisa que ainda não consegui nessa etapa são as aspas duplas, consegui inserir com a função repr() aspas simples, mas essas no arquivo da erro, eu testei.

// ----------------------------------------------------------------------------------
//MoveID      ServerName          ClientName          Zen      Level    Gate
// ----------------------------------------------------------------------------------
    1             'mapaserver'          'mapacliente'        150000    220      50

 

O código ficou assim agora:

dados = '''// ----------------------------------------------------------------------------------
//MoveID      ServerName          ClientName         Zen      Level    Gate
// ----------------------------------------------------------------------------------\n'''

arquivo = open("move.txt", "w")

linha = input("Digite nº linha: ")
server = str(input("Digite mapa do server: "))
cliente = str(input("Digite mapa do cliente: "))
zen = input("Digite zen necessário: ")
level = input("Digite o level necessário: ")
gate = input("Digite o gate do mapa: ")
branco = ''
move = (branco.rjust(4) + linha.ljust(9) + repr(server).ljust(20)
        + repr(cliente).ljust(21) + zen.ljust(10) + level.ljust(9) + gate)
arquivo.write(dados)
arquivo.write(move)
arquivo.close()

 

Não tá um espetáculo, mas já achei coisas bem úteis.

Tem alguma forma de inserir as aspas duplas com alguma função, ou vou ter que criar um find replace neste caso?

Mas ainda sei que preciso melhorar, porque vou ter que abrir, escolher uma linha e editar determinado índice, e não estou achando material que mostre algo assim.

Me indique algo referente a esse projeto que desejo fazer, e sua opinião o que pode melhorar nesse rascunho que fiz hehehe.

Link para o comentário
Compartilhar em outros sites

  • 0

Consegui fazer o que sugeriu.

 

// ----------------------------------------------------------------------------------
//MoveID      ServerName          ClientName          Zen      Level    Gate
// ----------------------------------------------------------------------------------
    1               "MapaS"             "MapaC"              150000    220      30

Ficou a variável assim:

move = (branco.rjust(4) + numero.ljust(9) + '"{}"'.format(server).ljust(20)
        + '"{}"'.format(cliente).ljust(21) + zen.ljust(10) + level.ljust(9) + gate)

O "+r" eu já estava de olho, agora vou para a parte de edição das linhas, essa não faço ideia agora como vou fazer.

Preciso selecionar o campo MoveID para ter acesso então aos dados, porque neste campo é onde posso trocar o mapa de número.

Ex: no MoveID 5, é o mapa6, e quero deixar o Mapa8 então, quem sempre vou alterar é o nome dos mapas e não MoveID, por isso prefiro acessar ele para ter os outros campos disponíveis.

O que posso fazer, criar uma função para varrer o MoveID?

A principio seria isso, a dúvida cruel era inserir os dados como eu precisava, se puder indicar algo para a ultima questão ajudaria.

Obrigado por enquanto.

 

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...