2017-06-12 59 views
0

我试图将多个二进制文件转换为一个CSV文件。如果我使用'w'#write写入文件,我的代码可以工作,但是每个新的迭代都会写入最后一个。但是,当我使用'a'#add添加到文件时,我的结果值与使用'w'(和不正确)时不同。有没有办法让我的结果成为一个文件而不使用append覆盖以前的结果?追加给出的结果不是写

这里是我的代码:

import os 
import numpy as np 

fileLib1 = ('/path1/') 
ref = ('/path2/ref.csv') 

for file in os.scandir(fileLib1): 
    with open(file,'rb') as f: 
     text = list(np.fromfile(f,dtype=np.float32)) 
    with open(ref,'a') as conv: #problem, 'a' vs 'w' 
     for n in text: 
      conv.write('%s,\n' %n) 
+0

使用'open(file,'ab')'来代替编写二进制文件。 – Ding

+0

'ab'给了我这个问题,'内核死亡,重新启动'。 'rb'似乎为我工作到目前为止。 – Appelynn

回答

0

我不知道为什么你敞开,而在每次迭代关闭目标文件:在节目的开头与w简单打开文件,并关闭它结尾:

import os 
import numpy as np 

fileLib1 = ('/path1/') 
ref = ('/path2/ref.csv') 

with open(ref,'w') as conv: # open the target file at the beginning 
    for file in os.scandir(fileLib1): 
     with open(file,'rb') as f: 
      text = list(np.fromfile(f,dtype=np.float32)) 
     for n in text: 
      conv.write('%s,\n' %n)

这也可能会增加程序一点的性能,因为打开/关闭/ ...文件通常OS操作,因此不免费,所以说话。

+0

谢谢你的建议,但安排它就像给我同样的问题,由于某种原因,我的结果文件有不同的值应该比它应该。我不明白这是为什么,但它是。 – Appelynn

+0

@Appelynn:在这种情况下,它不能是flie模式。你确定它不是包含奇怪结果的你的numpy文件之一吗?请注意,最初只保存最后一个numpy文件。 –

+0

原来我有一个隐藏的文件搞砸了我,谢谢你的帮助。 – Appelynn