【发布时间】:2017-04-01 07:00:56
【问题描述】:
我使用以下代码从文件中删除行:
File.open("#{$whitelist}-tmp", "w") do |outFile|
File.foreach("#{$whitelist}") do |li|
outFile.puts li unless li.chomp[/\A#{instanceId}\z/]
@comm = outFile
end
end
FileUtils.mv(@comm, $whitelist)
它有效,但我认为这不是正确的方法,因为我必须创建一个额外的变量“@comm”只是为了从循环中传达文件名。如果我直接使用 'outFile' 作为 FileUtils.mv 的第一个参数,我会得到一个未定义的变量错误。
那么,我应该怎么做呢?
提前致谢。
【问题讨论】:
-
与你的问题无关,
"#{$whitelist}"中的"#{...}"是什么目的? -
这段代码没有多大意义,IMO。
outFile因此@comm是一个File对象。更重要的是,在块之后,它将是一个closed 文件对象。FileUtils::mv将Strings 作为参数,而不是Files。我很惊讶它甚至可以正常工作,我希望TypeError是raised。 -
@JörgWMittag:确实提高了:
TypeError: no implicit conversion of Fixnum into String