Python用循环在文件中写入行

时间:2016-01-22 10:41:59

标签: python file format lines

我正在尝试在几个循环中的文件中写入数据。我遇到的困难是数据在行和列中的时间都在变化。我得到的是:

________________________________________________________
   f=25,0    |   b=-25,0   | a=-30 | 
________________________________________________________
  d   |  Ka  |  Kah |  th  |  Ko  | 75/25| 50/50|  Egb | 
________________________________________________________
-25,0 | 0,76 | 0,44 |   60 | 0,40 |  0,49|  0,58|  1,43| 
-17,0 | 0,37 | 0,25 |   46 | 0,40 |  0,39|  0,39|  2,61| 
-13,0 | 0,32 | 0,23 |   45 | 0,40 |  0,38|  0,36|  2,75| 
 -8,0 | 0,27 | 0,22 |   44 | 0,40 |  0,37|  0,34|  2,90| 
  0,0 | 0,23 | 0,20 |   43 | 0,40 |  0,36|  0,32|  3,08| 
  8,0 | 0,20 | 0,19 |   42 | 0,40 |  0,35|  0,30|  3,27| 
 13,0 | 0,19 | 0,18 |   41 | 0,40 |  0,35|  0,29|  3,49| 
 17,0 | 0,18 | 0,18 |   41 | 0,40 |  0,35|  0,29|  3,49| 
 25,0 | 0,17 | 0,17 |   40 | 0,40 |  0,34|  0,29|  3,73| 
________________________________________________________


________________________________________________________
   f=25,0    |   b=-25,0   | a=-20 | 
________________________________________________________
  d   |  Ka  |  Kah |  th  |  Ko  | 75/25| 50/50|  Egb | 
________________________________________________________
-25,0 | 0,80 | 0,57 |   70 | 0,45 |  0,54|  0,63|  1,00| 
-17,0 | 0,43 | 0,35 |   53 | 0,45 |  0,45|  0,44|  1,88| 
-13,0 | 0,38 | 0,32 |   51 | 0,45 |  0,43|  0,42|  2,05| 
 -8,0 | 0,33 | 0,29 |   49 | 0,45 |  0,42|  0,39|  2,25| 
  0,0 | 0,29 | 0,27 |   48 | 0,45 |  0,41|  0,37|  2,36| 
  8,0 | 0,26 | 0,25 |   46 | 0,45 |  0,40|  0,35|  2,61| 
 13,0 | 0,24 | 0,24 |   46 | 0,45 |  0,40|  0,35|  2,61| 
 17,0 | 0,24 | 0,24 |   45 | 0,45 |  0,40|  0,34|  2,75| 
 25,0 | 0,23 | 0,22 |   44 | 0,45 |  0,40|  0,34|  2,90| 
________________________________________________________

我想得到的是:

_______________________________________________________________________________________________________________________________                           
   f=25,0     |      b=-25,0                                                                 
_______________________________________________________________________________________________________________________________
             a=-30                                                  |      a=-20                
_______________________________________________________________________________________________________________________________                          
  d    |   Ka   |  Kah   |  th  |   Ko   | 75/25  | 50/50  |  Egb   |   Ka  |   Kah  |  th  |   Ko  |  75/25 | 50/50 | Egb    | 
_______________________________________________________________________________________________________________________________                          
-25,0  |  0,76  |  0,44  |  60  |  0,40  |  0,49  |  0,58  |  1,43  |  0,80 |   0,57 |   70 |   0,45|   0,54 |  0,63 |   1,00 |   
-17,0  |  0,37  |  0,25  |  46  |  0,40  |  0,39  |  0,39  |  2,61  |  0,43 |   0,35 |   53 |   0,45|   0,45 |  0,44 |   1,88 |   
-13,0  |  0,32  |  0,23  |  45  |  0,40  |  0,38  |  0,36  |  2,75  |  0,38 |   0,32 |   51 |   0,45|   0,43 |  0,42 |   2,05 |   
 -8,0  |  0,27  |  0,22  |  44  |  0,40  |  0,37  |  0,34  |  2,90  |  0,33 |   0,29 |   49 |   0,45|   0,42 |  0,39 |   2,25 |   
  0,0  |  0,23  |  0,20  |  43  |  0,40  |  0,36  |  0,32  |  3,08  |  0,29 |   0,27 |   48 |   0,45|   0,41 |  0,37 |   2,36 |   
  8,0  |  0,20  |  0,19  |  42  |  0,40  |  0,35  |  0,30  |  3,27  |  0,26 |   0,25 |   46 |   0,45|   0,40 |  0,35 |   2,61 |   
 13,0  |  0,19  |  0,18  |  41  |  0,40  |  0,35  |  0,29  |  3,49  |  0,24 |   0,24 |   46 |   0,45|   0,40 |  0,35 |   2,61 |   
 17,0  |  0,18  |  0,18  |  41  |  0,40  |  0,35  |  0,29  |  3,49  |  0,24 |   0,24 |   45 |   0,45|   0,40 |  0,34 |   2,75 |   
 25,0  |  0,17  |  0,17  |  40  |  0,40  |  0,34  |  0,29  |  3,73  |  0,23 |   0,22 |   44 |   0,45|   0,40 |  0,34 |   2,90 |   
_______________________________________________________________________________________________________________________________  

这是我的代码:

import numpy as np
import math as m
import csv
file = open("test.txt", 'w')
phi_list=[25.]
alfa_list=[-30,-20,-10,0,10,20,30]
b=0
#
for f in phi_list:
    i = int(2*f/5+1)
    print 'i =',i
    bi = np.arange(-f,f+5,5)
    beta = bi.tolist()
    print "beta:", beta
    d = np.arange(-f,f+5,f/3)
    di = d.tolist()
    print "di:", di
    di.insert(1,-f/2)
    print "di:", di 
    di.insert(5,f/2)
    dk = sorted(di)
    delta = [round(elem, 0) for elem in dk]
    print "delta:", delta   
    for bo in beta:
#        file.write("\n" + "\n" +'f=' +'%s'%f+ ' | ' +'b=' +'%s'%b + "\n" )
        if bo == f and bo > 0:
            b = bo-0.01
        elif b == f and bo < 0:
            b = bo+0.01
        for a in alfa_list:
            file.write("\n" +"\n" +'____________________________________________________________________________________' +"\n" )
            file.write( '   f=' +'%s'%f + '    | ' +'  b=' +'%s'%(bo) + '   | ' +'a=' +'%s'%a + ' | ' +"\n" )
            file.write('____________________________________________________________________________________' +"\n" )
            file.write('  d  ' + ' | ' + ' Ka '+ ' | ' + ' Kah'+ ' | ' + ' th '+ ' | '+ ' Ko '+ ' |'+ ' 75/25'+ '|'+ 
            ' 50/50'+ '| '+ ' Egb ' + '| '+ "\n")
            file.write('____________________________________________________________________________________' +"\n" )
            for d in delta:

                Ka=(csfa**2)/((csa**2)/(csad*csba)))**2)
#
                theta=round(f+m.degrees(m.atan(csfa/(snfa+m.sqrt((snfd*csab/(snfb*csad)))))))

#
                fo=1-abs(tna*tnb)
                print "fo:", fo 
                K1=(snf)/(snf-snb*2)*csb*2
                print "K1:", K1 
                tna1=m.sqrt(1/((1/K1)))
                print "Tana1:", tna1    
                Ko=K1*fo*(1+tna1)/(1+tna1*tndo)
                Ko5=0.5*Ko+0.5*Ka
                Ko3=0.75*Ko+0.25*Ka
                Kah=Ka*csad
                Edb=1/(m.tan(m.radians(theta-f)))
                file.write( '{0:5.1f} {1:s} {2:.2f} {3:s} {4:.2f} {5:s} {6:4.0f} {7:s} {8:.2f} {9:s} {10:5.2f}{11:s} {12:5.2f}{13:s} {14:5.2f}{15:s} \n'.format(d,
                '|', Ka,'|', Kah, '|', theta, '|', Ko, '|', Ko3, '|', Ko5,'|', Edb,'|'))
            file.write('____________________________________________________________________________________' +"\n" )



file.close()

我需要的是新的alpha数据要添加到行而不是下一列。我尝试过加入但没有成功。有什么建议或解决方案吗?

1 个答案:

答案 0 :(得分:1)

您正在循环a,在这些循环中,您使用换行符写入文件,并在计算下一个a之前对其进行所有计算。所以,毫不奇怪,你一个接一个地写了块。

你应该做的是反转alfa_listdelta上的循环:实际上,d实际上是你的行轴,并且对于它们的每个值,写下所有的数字所有a值。

提示:在alfa_list上循环时,仅为列表的最后一个添加换行符。您可以使用for a_idx, a in enumerate(alfa_list):

进行操作