在单个文件中写入从不同函数生成的值

时间:2011-08-03 17:37:53

标签: python

我编写了这段代码,我在这里要做的是编写从这个函数生成的值和另一个在timeList中存储为列表的值 parameterList。我不应该在同一个函数中写timeList的值。它应该可以在一个单独的函数中完成。我已在timeList文件中获得了curve.dat。现在我必须在同一个文件中写parameterList但不遵循timeList的值,而是在timeList的右侧。 timeList文件中的curve.dat为:

  

0.07
  0.06
  0.08
  0.12
  0.11
  0.09
  0.14
  0.05
  0.06

parameterList是:

[0.744527502029805, 1.3466145472841764, 2.8186875392157371, 3.2822440320192392, 7.9272007790523782, 6.0493081375991276, 9.2609232787439613, -611.06135600582172, -399.75236270058838]

现在我应该将curve.dat文件的内容改为:

0.07       0.744527502029805  
0.06       1.3466145472841764  
0.08       2.8186875392157371  
0.12       3.2822440320192392  
0.11       7.9272007790523782  
0.09       6.0493081375991276  
0.14       9.2609232787439613  
0.05       -611.06135600582172  
0.06       -399.75236270058838  

请有人帮忙解决这个问题。谢谢。

def time(transcriptionFile) :
    with open("transcriptions.txt", "r") as tFile :
        timeList = []
        parameterList = []

        for line in tFile :
            li = line.split()
            if li :
                start_time = (int(li[0]) / 10000000.)
                end_time = (int(li[1]) / 10000000.) 
                duration = ((int(li[1]) -int(li[0]))/10000000.)
                timeList.append(duration) # t(u) values for plotting the bezier curves

                with open("curve.dat", "w") as outFile:
                    outFile.write("\n".join(str(x) for x in timeList))

                poly = poly_coeff(start_time, end_time, duration)

                Newton(poly, 0.42, parameterList) 

1 个答案:

答案 0 :(得分:3)

timeList循环内部,不要将for line in tFile写入文件。 请注意您打开和关闭文件的次数(非常低效)。另请注意,如果以'w'(写入)模式而不是'a'(追加)模式打开文件,它将覆盖以前的内容......

相反,等待(延迟满足!),直到你同时组装timeListparameterList。然后做

with open("curve.dat", "w") as outFile:
    for t,p in zip(timeList,parameterList):
        outFile.write('{t}\t{p}\n'.format(t=t,p=p))