2013-02-08 2 views
1

문자열을 대체하는 프로그램을 작성하려고합니다.문자열 바꾸기의 ERRNO :: EACCES

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) 

가 계속?

+2

당신은 그 파일에 쓸 수있는 권한이 없습니다? –

+0

또한 텍스트는 여러분이 생각하는 것과 다르며, 줄을 쓰더라도 파일의 내용은 변경되지 않습니다. – pguardiario

답변

2

초기 문제는 파일을 읽기 ('w') 만 열고 읽는 것이 아니므로 예외가 수신된다는 것입니다.

위의 설명에 언급 된 것처럼 코드에도 다른 문제가 있습니다.

This answer은 수행하려는 작업을 수행하는보다 일반적인 방법을 제공합니다.

같은 질문에 another answer에서 언급 한 바와 같이

는, 루비도 같은 일을하게 펄에서 상속 명령 줄 바로 가기를 가지고이 사소한 :이 최대 백업, 장소에 파일이나 파일을 편집합니다

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

접미사가 '.bak'인 이전 버전 Programming 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 
관련 문제