How to store information in a file in Python (write)?

1

Hello, I'm writing a program in Python with a code I have in Fortran. I'm having a problem writing this fortran:

do i=1,n
write(3,350)r(i),(ener(j)*alfa,j=1,6) !meV

end do

I tried to write this way in Python:

file=open("energia_nll2_R50A.dat","w")
for i in range(1,n+1):
  for j in range(1,6):
    file.write("r[i],(ener[j]*alfa)")
file.close()

I wanted to know if there is one more equivalent way of writing this excerpt in Python.

Complete code:

alfa = 3014.4
r = []
for i in range(1,n1+1):
  x = r1 + (i - 1)*hr1
  r.append(x)
ener = []
for i in range(1,n):
  for j in range(i+1,n+1):
    if ener[i]>ener[j]:
      az = ener[j]
      ener[j] = ener[i]
      ener[i] = az
      for k in range(1,n+1):
        zz3 = vetor[k,j]
        vetor[k,j] = vetor[k,i]
        vetor[k,i] = zz3

file=open("energia_nll2_R50A.dat","w")
for i in range(1,n+1):
  for j in range(1,6):
    file.write("r[i],(ener[j]*alfa)")
file.close()
    
asked by anonymous 17.04.2018 / 15:32

1 answer

0

Hi, yes you can write. Let's do it.

file=open("energia_nll2_R50A.dat","w")
for i in range(1,n+1):
    for j in range(1,6):
        file.write("r[i],(ener[j]*alfa)")
file.close()

First we're going to change the "w" to "w +" , so when we write to the file the file data will not be overwritten.

Then we'll build a variable just to be more readable.

conteudo = "%.f,%.f" %(r[i],ener[j]*alfa) # Caso os parentesis seja necessario, pode adicionar no segundo %.f

So the snippet of code would look like this.

file=open("energia_nll2_R50A.dat","w")
for i in range(1,n+1):
    for j in range(1,6):
        conteudo = "%.f,%.f" %(r[i],ener[j]*alfa)
        file.write(conteudo)
file.close()

Now about the complete code, as I do not know all the variables should look like this:

### Variáveis com alguns valores para poder testar.

n1 = 33
r1 = 2.321
hr1 = 0.456
n = 33

##################

alfa = 3014.4
r = []
for i in range(1,n1+1):
  x = r1 + (i - 1)*hr1
  r.append(x)

ener = [] # Como esta variável está vazia, acho que você insere alguma coisa nela, porém como não está escrito, assume-se uma lista com valores aleatórios.


### Como não vi a variável vetor, então criei uma, do tipo dicionário.
### Pois ela aceita um índice do tipo tupla. " (k,i) " or " k,i "

vetor={} # Porém não sei os valores que você guarda nela. Se você adicionar o mais informações eu completo a resposta.

##################

for i in range(1,n):
  for j in range(i+1,n+1):
    if ener[i]>ener[j]:
      az = ener[j]
      ener[j] = ener[i]
      ener[i] = az
      for k in range(1,n+1):
        zz3 = vetor[k,j]
        vetor[k,j] = vetor[k,i]
        vetor[k,i] = zz3

file=open("energia_nll2_R50A.dat","w+")
for i in range(1,n+1):
    for j in range(1,6):
        conteudo = "%.f,%.f" %(r[i],ener[j]*alfa)
        file.write(conteudo)
file.close()

That should work. Anything just ask.

    
15.08.2018 / 19:30