2011-11-03 59 views
0

我打开一个CSV文件,用以下代码编写,如CSV文档中所示(http://ruby-doc.org/stdlib- 1.9.2/libdoc/CSV /的RDoc/CSV.html):CSV.open(..)块不会执行,并立即结束

CSV.open(csv_file_out, 'wb') { |csv_line_out| 

    #stuff happens here 

} 

的CSV.open命令调试程序直接转到块的结束后的块不执行,即

思考 “以防万一”,我尝试用相同方式IO w+bwtw+taba+b。我也曾尝试在打开文件之前创建文件。没有什么变化。

当我在CSV.open行停止调试器时,我能够手动执行一个块并自己创建一个csv文件。我也可以从控制台创建文件frmo完全相同的命令。但在服务器中执行时不起作用。

关于发生什么事情的任何想法都非常受欢迎。提前致谢!

+0

您的服务器是否具有对输出文件和更重要的目录的写入权限? – diedthreetimes

+0

是的。但我运行这不是在我的常规机器上,但在我没有配置的远程机器上运行。将在我的普通机器上运行时更新。 – Kaya

+0

在由于编码问题而引发异常时有类似的问题。写入CSV突然停止,没有任何信息打印到终端。我在周围添加了一个开始/救援来确定哪里出了问题。 –

回答

-1

您试图迭代某物。 (文件内容)不存在,因此它的逻辑性就是它结束了!试试这个方法:

CSV.open(csv_file_out, "wb") do |csv| 
    csv << [column1, column2,...] 
end 
+0

这就是我目前所做的:我在你的代码和我之间看到的差异是: 1.'| csv_line_out |'与'| csv |' 2.双引号与单引号。 你看到'#stuff发生在这里'我将元素添加到'| csv_line_out |'。这仍然不起作用。 :-( – Kaya

+0

这几乎完全重复了op的问题,没有任何解释。 – diedthreetimes