Ruby에서 파일의 행을 읽는 방법
다음 코드를 사용하여 파일에서 줄을 읽으려고했습니다. 그러나 파일을 읽을 때 내용은 모두 한 줄에 있습니다.
line_num=0
File.open('xxx.txt').each do |line|
print "#{line_num += 1} #{line}"
end
그러나이 파일 은 각 줄을 개별적으로 인쇄합니다.
stdin을 사용해야합니다 ruby my_prog.rb < file.txt
. 여기서 줄 끝 문자가 파일이 사용하는 것을 가정 할 수 없습니다. 어떻게 처리 할 수 있습니까?
내 대답은 모두 이후에 행 끝의 모든 종류의 처리에 대한 새로운 우려 커버 생각 "\r\n"
과 "\r"
리눅스 표준으로 변환 "\n"
선을 구문 분석하기 전에합니다.
"\r"
일반 "\n"
및 "\r\n"
Windows에서 EOL 문자 를 지원하려면 다음 과 같이 하십시오.
line_num=0
text=File.open('xxx.txt').read
text.gsub!(/\r\n?/, "\n")
text.each_line do |line|
print "#{line_num += 1} #{line}"
end
물론 이것은 전체 파일을 메모리에로드하는 것을 의미하기 때문에 매우 큰 파일에는 좋지 않을 수 있습니다.
루비는 이것을위한 방법을 가지고 있습니다 :
File.readlines('foo').each do |line|
http://ruby-doc.org/core-1.9.3/IO.html#method-c-readlines
File.foreach(filename).with_index do |line, line_num|
puts "#{line_num}: #{line}"
end
전체 파일을 메모리에 넣지 않고 파일의 각 줄에 대해 주어진 블록을 실행합니다. IO :: foreach를 참조하십시오 .
첫 번째 파일에는 Mac Classic 줄 끝이 있습니다 ( "\r"
일반적인 대신 "\n"
). 로 열어
File.open('foo').each(sep="\r") do |line|
줄 끝을 지정합니다.
각 줄의 끝 때문입니다. 루비에서 chomp 메소드를 사용하여 끝에서 '\ n'또는 'r'을 삭제하십시오.
line_num=0
File.open('xxx.txt').each do |line|
print "#{line_num += 1} #{line.chomp}"
end
헤더가있는 파일에 대한 다음 접근 방식의 일부입니다.
File.open(file, "r") do |fh|
header = fh.readline
# Process the header
while(line = fh.gets) != nil
#do stuff
end
end
이를 통해 컨텐츠 행과 다르게 헤더 행을 처리 할 수 있습니다.
방법에 대한 얻는다 ?
myFile=File.open("paths_to_file","r")
while(line=myFile.gets)
//do stuff with line
end
런타임 중에 RAM을 늪에 빠뜨릴 수있는 큰 줄이있는 파일을 읽는 데 관심이있는 경우 항상 파일 조각을 읽을 수 있습니다. " 파일 슬러 핑이 나쁜 이유 "를 참조하십시오 .
File.open('file_path', 'rb') do |io|
while chunk = io.read(16 * 1024) do
something_with_the chunk
# like stream it across a network
# or write it to another file:
# other_io.write chunk
end
end
참고 URL : https://stackoverflow.com/questions/6012930/how-to-read-lines-of-a-file-in-ruby
'IT story' 카테고리의 다른 글
변경 불가능한 콜렉션에서 변경 불가능한 "add"메소드의 가장 좋은 이름은 무엇입니까? (0) | 2020.04.18 |
---|---|
Android Studio에서 데이터베이스 파일 내용보기 (0) | 2020.04.18 |
일반적인 AngularJS 워크 플로 및 프로젝트 구조 (Python Flask 사용) (0) | 2020.04.18 |
구글 프로토콜 버퍼 대 JSON 대 XML (0) | 2020.04.18 |
'POCO'정의 (0) | 2020.04.18 |