Ruby 파일 읽기,쓰기
루비에서 파일 읽기, 쓰기
루비에서는 파일 및 디텍토리 입출력을 위하여 File, Dir클래스를 제공하고 있다.
###File
File 클래스는 다양한 메서드를 통해 파일을 읽고 쓰고 할 수 있으며 다양한 방식으로 활용이 가능하다.
회사 프로젝트에서 File 클래스를 주로 사용하게 되었던 부분은 이미지 파일을 읽고 AWS S3에 업로드 할 때 혹은 어드민에서 엑셀 데이터를 활용, 생성하기 위해 주로 사용하였다.
File 클래스에 대한 다양한 기능은 문서를 통해 학습하고 필요한 기능을 사용하면 되겠다.
File Class Docs
https://ruby-doc.org/core-2.5.0/File.html
포스트에서는 사용했던 메서드와 간단한 사용방법에 대해 기록하고자 한다.
- 파일 읽기.
가장 중요한 읽기이다. 파일을 읽기 위해서는 File.open, File.new 이라는 메서드를 사용한다. 사용방법은 간단하며 다음과 같이 실행한다.
1 | File.open(filename, option) |
new 메서드와 open 메서드의 동작 결과는 동일하게 흘러간다. 하지만 open 메서드를 사용하면 코드 블록을 통한 작업이 가능해진다.
option 값으로 설정할 수 있는 값은 다음과 같다.
옵션 | 설명 |
---|---|
r | 읽기 전용 모드로 파일을 연다. |
r+ | 읽기,쓰기 모드로 파일을 연다. |
w | 쓰기 전용 모드로 파일을 연다. 단 파일이 존재한다면 덮어쓴다. 그리고 파일이 없다면 새로 생성한다. |
w+ | 읽기, 쓰기 모드로 파일을 연다. 단 파일이 존재한다면 덮어쓴다. 그리고 파일이 없다면 새로 생성한다. |
a | 쓰기 전용으로 연다. 파일이 존재한다면 파일의 끝을 가르키며 없으면 생성한다. |
a+ | 읽기 쓰기 모드로 연다. 파일이 존재한다면 끝을 가르키고 없다면 생성한다. |
- 폴더 읽기
폴더를 읽기 위해서는 Dir class를 활용한다.
1 | Dir.new(path) |
방식은 파일 클래스와 동일하다. 주로 디렉토리를 읽고 파일을 생성하거나 내부의 파일들을 활용하기 위해 사용되는 것 같다.
디렉토리 내부의 특정 파일을 열기위해 사용하게 되었는데 만약 어떤 경로의 내부에 있는 파일 모두 혹은 특정 파일들만 찾기 위해서는 다음과 같이 사용한다.
1 | # 이미지 파일만 가져오도록 한다. 확장자는 png파일만 |
cdn 링크를 통한 이미지 파일을 실행하기 위해서 두가지 클래스들을 활용하며 느낀점은 파일 읽고 쓰기 간단하다고 생각했지만 막상 자주 사용하지 않다보니 다소 어려움이 있었다.
가장 어려웠던 cdn 링크 이미지 파일 열기…
고민하고 구글링을 통해 찾아낸 방법…이다.
1 | image_path = "https://ifh.cc/g/jmG8MF.jpg" |
이런 방식으로 이미지를 실행하고 생성하며 업로드 등의 작업을 수행할 수 있다.
연휴 전 마지막 평일이라 그런가… 정리 퀄리티가 평소에도 막장이였는데.. 오늘은 더 심한것 같다.. 그래도 이번주 야근하면서 얻어낸? 결과 중 한가지를 기록하고자 마음먹고 기록을 하게 되었다는 것에 의미를 부여하자…
다음 포스트는 루비에서 엑셀 쓰기,읽기 관련하여 기록 예약… 요거 참 골때리고 간단하지만 복잡미묘한 그런 작업…