1

我正在尝试编写一个替换字符串的程序。

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)

你能解释一下我做错了什么吗?

4

1 回答 1

2

最初的问题是您只是打开文件进行写入('w'),而不是读取,因此收到异常。

正如上面的评论所提到的,代码还有其他问题。

这个答案提供了一种更典型的方式来做你想做的事情。

正如同一个问题的另一个答案中提到的,Ruby 也有一个从 Perl 继承的命令行快捷方式,这使得这样的事情变得微不足道:

ruby -pi.bak -e "gsub(/oldtext/, 'newtext')" *.txt

这将编辑一个或多个文件,备份带有后缀“.bak”的先前版本。

编程 Ruby

-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
于 2013-02-08T07:58:37.287 回答