official documentation은 지정하지 않습니다. EOFError는 "End of file error (파일 끝 오류)"를 의미하지만 정확히 무엇을 의미합니까? 파일 판독기가 파일 끝에 도달하면 오류 메시지가 나타나지 않습니다.Ruby 파일 입출력의 EOFError 란 무엇입니까?
9
A
답변
13
는 EOFError가 IO, 모든 입력/출력의 기준이되는 클래스의 모두 편리하다 :
import_file = File.open(filename)
begin
while (line = import_file.readline)
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end
rescue EOFError
# Finished processing the file
end
같은 일이 참고 EOFError없이 달성 될 수있다 : 예를 들어
루비에서. 이제 유닉스 핵심 개념을 기억하자. 모든 것이 파일이다. 여기에는 소켓이 포함됩니다. 그래서 소켓을 열어서 읽는 중이라면 예외적 인 상황에서 파일의 끝을 보게 될 것입니다.
모든 예제는 실제로 유용하지 않은 EOFError (텍스트 파일을 읽는 중)의 사소한 용도를 보여줍니다. 그러나 net/http 또는 소켓을 많이 사용하는 다른 클래스를 통해 파고 시작하면이 예외가 사용되는 것을 볼 수 있습니다.
편집 됨 응답을 그물/FTP
def getline
line = @sock.readline # if get EOF, raise EOFError
line.sub!(/(\r\n|\n|\r)\z/n, "")
if @debug_mode
print "get: ", sanitize(line), "\n"
end
return line
end
9
EOFError (파일 끝 오류)는 이미 파일의 끝을 참조하고있는 파일 객체에서 작업을 수행하려고 할 때 발생합니다. 이 예에서는 행이 존재하지 않을 때 readline
으로 시도하고 있습니다.
File.open(filename).each do |line|
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end
+1 더 나은 대답을 위해. – Swanand
감사합니다. Swanand. 나는 예제 코드를 내가 좋아하는 것을 사용하여 빚지고있다. "/usr/lib/ruby/1.8/net/ -name * .rb -exec grep EOFError/dev/null '{}'\;" –