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

Manipular arquivo de texto


Acneto

Pergunta

Boa tarde.

Na criação de um arquivo editável estou tendo alguns problemas.

Código:

arquivo = open("move.txt", "r+")
branco = ''
numero = '1' 
server = 'z'
cliente = 'z'
zen = 'z'
level = 'z'
gate = 'z'
move = (branco.rjust(4) + numero.ljust(9) + '"{}"'.format(server).ljust(20)
        + '"{}"'.format(cliente).ljust(21) + zen.ljust(10) + level.ljust(9) + gate)
lista = move.split()  # Transformei move e lista
lista[2] = 'mapa' # Edito indice 2 
print(lista)  # Confirmo a saida editada, é alterado perfeitamente.
move.join(lista) # Torno de lista para string novamente
print(move)  # Confirmo a saida, não é aletarado o indice 2 nesta confirmação.
arquivo.write('\n' + move)   # Na gravação do arquivo não tem efeito minha substituição.
arquivo.close()

 

Saida no pyCharm:

['1', '"z"', 'mapa', 'z', 'z', 'z']  # Lista alterada
    1        "z"                 "z"                  z         z        z  # Na conversão não é alterado

Process finished with exit code 0

#### Gravação no arquivo de texto:

    1        "z"                 "z"                  z         z        z   # Sem alteração.

 

 

Fiz testes com o IDLE nativo do python 3.4.1, volta um erro.

branco = ''
numero = '1'   
server = 'z'
cliente = 'z'
zen = 'z'
level = 'z'
gate = 'z'
move = (branco.rjust(4) + numero.ljust(9) + '"{}"'.format(server).ljust(20)
        + '"{}"'.format(cliente).ljust(21) + zen.ljust(10) + level.ljust(9) + gate)
SyntaxError: multiple statements found while compiling a single statement  # Surge este erro, não consigo nem ver o resultado

 

 

No terminal do linux:

 

branco =' '

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

>>>  # Imprime correto

move
'    1        "z"                 "z"                  z         z        z'


>>>lista = move.split()

>>> lista
['1', '"z"', '"z"', 'z', 'z', 'z']

>>> lista[2] = 'mapa'
>>> lista
['1', '"z"', 'mapa', 'z', 'z', 'z']

>>> move = move.join(lista)
>>> move        # Aqui sai uma bagunça só
'1    1        "z"                 "z"                  z         z        z"z"    1        "z"                 "z"                  z         z        zmapa    1        "z"                 "z"                  z         z        zz    1        "z"                 "z"                  z         z        zz    1        "z"                 "z"                  z         z        zz'

 

 

Pior que gravando em um arquivo de texto através do terminal, imprimi exatamente aquela bagunça, já no pycharm ele imprimi apenas a linha sem alteração.

Tentei criar outra variável e jogar a lista para dentro dela em vez da variável move e também não funciona

Em 3 editores o resultado é diferente, realmente não sei onde está o erro porque testei conversão de string para lista, trocar valor e retornar para string e deu certo, já gravando não deu certo.

A diferença que no terminal tive que criar variável por variável e depois jogar tudo para a variável mestre, senão virava uma tupla se declara-se a variável com todos os valores.

 

 

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

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,7k
×
×
  • Criar Novo...