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
'Nice programing' 카테고리의 다른 글
angularjs $ http.delete () 요청으로 데이터를 보내는 방법은 무엇입니까? (0) | 2020.12.10 |
---|---|
태그를 한 커밋 앞으로 이동 (0) | 2020.12.10 |
TextView의도 기호 (섭씨 / 화씨) (0) | 2020.12.10 |
macosx에서 python matplotlib 프레임 워크? (0) | 2020.12.10 |
JOptionPane 예 / 아니요 옵션 확인 대화 상자 문제 (0) | 2020.12.10 |