2016-07-22 75 views
0

在下面的代码中,我的问题是,它仅基于一个输入文件将输出写入所有文件夹。有人可以给我一个提示,并检查我的代码是否正确循环?xml libxml2解析

import libxml2 
import os.path 
from numpy import * 
from cfs_utils import * 

np=[1,2,3,4,5,6,7,8] 
n=[20,30,40,60,80,100,130] 
solver=["CG_iluk", "CG_saamg", "CG_ssor", "BiCGSTABL_iluk", "BiCGSTABL_saamg", "BiCGSTABL_ssor", "cholmod", "ilu" ] 
file_list=["eval_CG_iluk_default","eval_CG_saamg_default", "eval_CG_ssor_default", "eval_BiCGSTABL_iluk", "eval_BiCGSTABL_saamg", "eval_BiCGSTABL_ssor","simp_cholmod_solver_3D_evaluate ", "simp_ilu_solver_3D_evaluate" ] 

for sol in solver: 
    i=0 
    for cnt_np in np: 

     #open write_file= "Graphs/" + "Np"+ cnt_np + "/CG_iluk.dat" 
     #"Graphs/Np1/CG_iluk.dat" 


     write_file = open("Graphs/"+ "Np"+ str(cnt_np) + "/" + sol + ".dat", "w") 

     #loop through different unknowns 
     for cnt_n in n: 

      #open file "cfs_calculations_" + cnt_n +"np"+ cnt_np+ "/" + file_list(i) + "_default.info.xml" 

      read_file = "cfs_calculations_" +str(cnt_n) +"np"+ str(cnt_np) + "/" + file_list[i] + ".info.xml" 

      #read wall and cpu time and write 

      if os.path.exists(read_file): 
       doc = libxml2.parseFile(read_file) 
       xml = doc.xpathNewContext() 
       walltime = xpath(xml, "//cfsInfo/sequenceStep/OLAS/mechanic/solver/summary/setup/timer/@wall") 
       cputime = xpath(xml, "//cfsInfo/sequenceStep/OLAS/mechanic/solver/summary/setup/timer/@cpu") 
       unknowns = 3*cnt_n*cnt_n*cnt_n 
       write_file.write(str(unknowns) + "\t" + walltime + "\t" + cputime + "\n") 
       doc.freeDoc() 
     write_file.close() 
    i=i+1 
+0

外面你只描述了它_is_做的,而不是_should_它来代替做。请[编辑]您的问题并添加该信息。一些示例输入和输出文件名也会有用。 – martineau

回答

0

问题解决了,我= O,是环

+0

如果'i'是'cnt_np'的计数器,你可以这样写:'for i,cnt_np in enumerate(np):'。 – Frodon