Nice programing

Ruby에서 파일의 첫 줄 읽기

nicepro 2020. 12. 10. 21:08
반응형

Ruby에서 파일의 첫 줄 읽기


내가 읽고 싶은 경우에만 가능한 가장 빠른, 가장 간단하고 관용적 인 방법으로 루비를 사용하여 파일의 첫 줄을. 최선의 접근 방법은 무엇입니까?

(특히 : 최근 Capistrano가 배포 한 Rails 디렉토리의 REVISION 파일에서 git commit UUID를 읽어 내 태그에 출력하고 싶습니다. 이렇게하면 내 서버에 배포 된 버전을 http- 한눈에 볼 수 있습니다. . 완전히 다르고 더 나은 방법이 있다면 알려주세요.)


이것은 정확히 한 줄을 읽고 파일이 즉시 제대로 닫히도록합니다.

strVar = File.open('somefile.txt') {|f| f.readline}
# or, in Ruby 1.8.7 and above: #
strVar = File.open('somefile.txt', &:readline)
puts strVar

읽기 위해 파일을 적절하게 열고 나중에 닫는 간결한 관용적 방법이 있습니다.

File.open('path.txt', &:gets)

빈 파일로 인해 예외가 발생하려면 대신 이것을 사용하십시오.

File.open('path.txt', &:readline)

또한 귀하의 목적과 몇 줄을 더 읽고 싶은 다른 많은 경우에 작동하는 빠르고 더러운 헤드 구현이 있습니다.

# Reads a set number of lines from the top.
# Usage: File.head('path.txt')
class File
  def self.head(path, n = 1)
     open(path) do |f|
        lines = []
        n.times do
          line = f.gets || break
          lines << line
        end
        lines
     end
  end
end

이것을 시도 할 수 있습니다.

File.foreach('path_to_file').first

루비 파일의 첫 줄을 읽는 방법 :

commit_hash = File.open("filename.txt").first

또는 애플리케이션 내부에서 git-log를 수행 할 수도 있습니다.

commit_hash = `git log -1 --pretty=format:"%H"`

% H는 전체 커밋 해시를 인쇄하도록 형식을 알려줍니다. Rails 앱 내부에서 로컬 git repo에 더 루비 같은 방식으로 액세스 할 수있는 모듈도 있습니다.


first_line = open("filename").gets

git --pretty옵션 을 조사하라는 jkupferman 제안이 가장 합리적 이라고 생각 하지만 또 다른 접근 방식은 head명령입니다.

ruby -e 'puts `head -n 1 filename`'  #(backtick before `head` and after `filename`)

@Chuck이 게시 한 답변을 개선하면 읽고있는 파일이 비어 있으면 EOFError 예외가 발생한다는 점을 지적하는 것이 가치가 있다고 생각합니다. 예외를 포착하고 무시합니다.

def readit(filename)
 text = ""
 begin
   text = File.open(filename, &:readline)
 rescue EOFError
 end
 text
end

first_line = File.readlines('file_path').first.chomp

참고 URL : https://stackoverflow.com/questions/1490138/reading-the-first-line-of-a-file-in-ruby

반응형