Jump to content
Fórum Script Brasil
  • 0

Manipular arquivo de texto


Acneto
 Share

Question

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.

 

 

Edited by Acneto
Link to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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.9k
    • Total Posts
      646.8k
×
×
  • Create New...