2014-02-14 2 views
1

파일의 첫 줄부터 어떻게 루비의 텍스트 파일을 읽을 수 있습니까?Ruby가 파일의 처음부터 계속 읽음

예를 들어,이 코드 :

while line = file.gets 
[code here] 
end 

가 마지막 줄에 첫 번째 줄에서 읽고 중지합니다.

그러나 첫 번째 줄부터 다시 시작하여 마지막 줄까지 스캔하고 싶습니다.

이 작업을 수행하는 방법은 무엇입니까?

감사합니다.

+3

파일을 무제한으로 읽고 싶습니까? –

+0

아아 나는 대답에 대한 감사를 보았다 – user3307307

답변

4

당신이 작성한 코드는 루비 프로그래밍에서 매우 드문, 파일이 예를 들어, Enumerable 방법을 사용하여 라인으로 라인을 읽어 대부분의 시간 :

file.each { |line| [code here] } 

당신의 Enumerable#cycle 방법을 사용할 수 있다고 말했다 파일을 두 번 이상 읽으십시오. 다음 파일을 감안할 때, foo.txt 말 :

foo 
bar 

는 다음과 같은 코드를 사용하여 두 번 읽을 수 있습니다 : cycle에,

open('foo.txt') do |file| 
    file.cycle(2) { |line| puts line }  
end 

# Output: 
# 
# foo 
# bar 
# foo 
# bar 

당신이 nil, 또는 전혀 인수를 전달하는 경우를 영원히 파일을 읽 .

+1

정말 아름답습니다. – sawa

+0

감사합니다. 이것은 내가 필요한만큼 효과가 있었다. – user3307307

+0

루비 (Ruby)는 단지 하나의 일을하기위한 몇 가지 방법을 갖고있는 것처럼 보입니다. 나는 항상 새로운 것을 발견하고 있습니다. – lurker

2

file.rewind을 사용하면 처음으로 되돌릴 수 있습니다.

+0

사과 @ 사와, 내 코멘트를 삭제했습니다. – lurker

+0

@mbratch 감사합니다. 나는 특히 기분이 좋지 않다. 나는 사람들이 내가 그것을 복사했다고 생각하길 원치 않았다. – sawa

관련 문제