2016-05-31 145 views
4

我需要将行附加到.csv文件。每行包含一个整数向量。要添加的矢量在运行中生成,并且我无法预先知道将添加多少行。
我试图做到以下几点,但它似乎并没有创建一个.csv文件,也没有在单独的行中包含每个元素。如何将行添加到.csv文件

s = open("testfile.txt", "a") 

for i in 1:5 

    x = rand(Int8, 10) 
    writecsv(s, x) 

end 

close(s) 

任何帮助表示赞赏!

回答

8

所以,你知道如何创建或使用该超写一个CSV文件:

x = [1 2 ; 3 4 ; 5 6] 
filePath = "/someAbsolutePath/temp1.csv" 
writecsv(filePath, x) 

当你想追加一个新的行(或一重击多行),你也可以使用writecsv但首先您需要以附加模式显式打开文件,然后将生成的文件标识符设置为writecsv的第一个参数。继续上面的例子:

fid1 = open(filePath, "a") 
writecsv(fid1, [7 8]) 
close(fid1) 

我不认为writecsv在完成后将自动close文件时第一个输入是一个文件标识符,所以最终close声明是非常重要的。或者,您可以使用@ShaoWeiTeo在评论中提出的版本来获得自动close

+4

我们也可以使用'open(f :: Function,command,mode :: AbstractString =“r”,stdio = DevNull)'版本,在写入发生后自动关闭连接。我更喜欢手动关闭,并且是更加Julian的方式来打开文件我认为... –

+0

感谢科林和邵伟为您解答。这就是我一直在寻找的东西。非常感激! 我现在还了解到,writecsv()在我的Windows系统上也使用UNIX哲学来创建新行。 – InkPen