2010-11-16 47 views
0

编写一个小脚本复制一些文件,但我得到的错误:的Ruby语法错误:文件复制

fileops.rb:6: syntax error, unexpected ')'

继承人我的代码

require 'ftools' 

plays = ['RomeoAndJuliet.txt', 'Hamlet.txt', 'TheTempest.txt', 'TheMerchantofVenice.txt', 'AMidSummerNightsDream.txt'] 

plays.each do |filename| 
    File.new("/clean/_cleaned" + filename, w+) 
    File.syscopy(filename, "/clean/_cleaned" + filename) 
end 

所有支架似乎是他们应该是。有什么建议么?

回答

5

w +应在引号中。

File.new("/clean/_cleaned" + filename, "w+") 
+0

谢谢:)还是一个Ruby初学者:) – 2010-11-16 22:26:38

+0

没问题。我们都去过那里。 – 2010-11-16 22:29:06

+0

Hrm,这段代码似乎根本不起作用,有没有更好,正确的方法来做我正在尝试的? – 2010-11-16 22:34:56

5

您可以使用Fileutils.cp复制文件:

require 'fileutils' 
Fileutils.cp source, dest 
2
require 'fileutils' 
plays = %w[RomeoAndJuliet Hamlet TheTempest TheMerchantofVenice AMidSummerNightsDream] 
plays.each do |play| 
    Fileutils.cp "#{play}.txt", "/clean/_cleaned#{play}.txt" 
end 

或者,所有.txt文件复制,而不是一个明确的清单目录,:

Dir['*.txt'].each do |file| 
    Fileutils.cp "#{file}", "/clean/_cleaned#{file}" 
end 
+0

我冒昧解决你的第二个例子。 'file'包含了文件名,所以在'#{file}'后面的第二行中不需要添加'.txt'。 – Veger 2010-11-17 08:50:12

+0

你是对的;谢谢! – Phrogz 2010-11-17 14:04:27