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

これにより、1 つまたは複数のファイルが適切に編集され、以前のバージョンが「.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 に答える