official documentation не указывается. Я понимаю, что EOFError означает «Конец ошибки файла», но что именно это означает? Если считыватель файлов достигает конца файла, это не похоже на ошибку.Что такое EOFError в Ruby file I/O?
ответ
EOFError что удобно во всех IO, класс, который является основой всех ввода/вывода в рубине. Теперь также запомните основные понятия Unix: все это файл. Это включает в себя сокеты. Итак, если у вас есть открытый сокет и читающий его, исключительным условием может быть столкновение с концом файла.
Все примеры показывают тривиальное использование EOFError (при чтении некоторого текстового файла), которые не очень полезны. Однако начните копать через net/http или другие классы, которые сильно используют сокеты, и вы увидите, что это исключение используется.
Edited добавить этот пример из сети/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
EOFError (Ошибка конца файла), вызывается при попытке выполнить операцию над файлом, который уже ссылается на конец файла. В этом примере мы пытаемся установить readline
, когда строка не существует.
Например:
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:
File.open(filename).each do |line|
sline = FasterCSV.parse_line(line)
# Do stuff with sline
end
спасибо за ответ. Я понимаю, что EOFError означает «Конец ошибки файла». но что именно это означает? Если читатель дойдет до конца файла, это не похоже на ошибку. – Tony
Извините, как глупо мне не считать. Я обновил ответ, но, я думаю, он все равно не может ответить на ваш вопрос. – Swanand
, если эти два в значительной степени эквивалентны для обработки файлов, помогает немного. спасибо – Tony
- 1. Lua file output: что такое -1. # IO?
- 2. Что такое io и socket?
- 3. Что такое [....] в Ruby?
- 4. Ruby mailer подходит с EOFError
- 5. Что такое макрос WITH-STANDARD-IO-SYNTAX?
- 6. Что такое ($ file eq '.' || $ file eq '..')?
- 7. Что такое канал в Netty IO?
- 8. Что такое «операция async IO» в .NET?
- 9. Ищете способ легко реализовать класс File/IO в Ruby
- 10. Что такое CocosBuilder .ccbi file
- 11. File IO с Gradle
- 12. File IO using java
- 13. Java Runnable File IO
- 14. Что такое __varmap__ в Ruby?
- 15. Что такое `супер` в Ruby?
- 16. Что такое хеширование в Ruby?
- 17. Что такое "p" в Ruby?
- 18. Что такое репа в Ruby?
- 19. Что такое `hash` в ruby?
- 20. Что такое «главное» в Ruby?
- 21. Что такое $? означает в Ruby?
- 22. Что такое: + и &: + в Ruby?
- 23. Что такое оператор «= ~» в Ruby?
- 24. Что такое ->() {} в Ruby?
- 25. Что такое `&: capitalize` в Ruby?
- 26. Что такое делегирование в Ruby?
- 27. Что такое простые слова, блокирующие IO и неблокирующие IO?
- 28. python pickle.load() pkl file throws EOFError
- 29. Невозможно использовать IO :: Handle или IO :: File
- 30. Наследование IO :: File
+1 Для лучшего ответа. – Swanand
Спасибо Swanand. Я должен использовать пример кода для моего любимого использования find ... "find /usr/lib/ruby/1.8/net/ -name * .rb -exec grep EOFError/dev/null '{}' \;" – 2009-08-13 17:00:40