Jump to content
Fórum Script Brasil
  • 0

Lista em arquivo de texto


Acneto
 Share

Question

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?

Edited by Acneto
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...