我正在尝试编写一个替换字符串的程序。
require File.join(APP_ROOT, 'lib', 'main.rb')
files_names = Dir.entries("../DeSpacer")
files_names.each do |file_name|
File.open("#{file_name}", "w") do |text|
text.each {|line| line.gsub!(/\.\s{2,}/, "\.\s")}
end
end
我一直在
Permission denied -. (ERRNO::EACCES)
你能解释一下我做错了吗?
答案 0 :(得分:2)
最初的问题是你只是打开文件进行写入('w'),而不是阅读,从而接收异常。
正如上面提到的评论一样,代码也存在其他问题。
This answer提供了一种更典型的方式来做你想做的事情。
正如another answer中提到的同一个问题,Ruby也有一个从Perl继承的命令行快捷方式,这使得这样的事情变得微不足道:
ruby -pi.bak -e "gsub(/oldtext/, 'newtext')" *.txt
这将编辑一个或多个文件,使用后缀“.bak”备份以前的版本。
-i [extension}
' Edits ARGV files in place. For each file named in ARGV, anything you write to
standard output will be saved back as the contents of that file. A backup copy of
the file will be made if extension is supplied.
% ruby -pi.bak -e "gsub(/Perl/, 'Ruby')" *.txt