일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 데이터베이스
- 컴퓨터비전
- 보안
- 코딩
- Yes
- 프로그래밍
- 인공지능
- 프로그래밍언어
- 자바스크립트
- 소프트웨어
- 컴퓨터과학
- I'm Sorry
- 컴퓨터공학
- 2
- 클라우드컴퓨팅
- 네트워크보안
- 빅데이터
- 사이버보안
- 데이터과학
- 파이썬
- 딥러닝
- 웹개발
- 머신러닝
- 버전관리
- 네트워크
- 데이터분석
- 알고리즘
- 데이터구조
- 자료구조
- 소프트웨어공학
- Today
- Total
스택큐힙리스트
파이썬에서 stdout을 파일로 리디렉션하는 방법은 무엇인가요? 본문
파이썬에서 stdout을 임의의 파일로 리디렉션하는 방법은 무엇인가요?
긴 실행 Python 스크립트 (예 : 웹 어플리케이션)이 ssh 세션 내부에서 시작 및 백그라운드로 실행되고 ssh 세션이 닫히면, 응용 프로그램은 IOError를 생성하고 stdout에 쓰려고 시도 할 때 즉시 실패합니다. IOError로 인한 실패를 방지하기 위해 응용 프로그램 및 모듈이 stdout이 아닌 파일로 출력할 수 있는 방법을 찾아야 했습니다. 현재, nohup을 사용하여 출력을 파일로 리디렉션하고 작업이 완료되었으며, 궁금증 때문에 nohup을 사용하지 않고도 할 수 있는 방법이 있는지 궁금합니다.
저는 이미 sys.stdout = open('somefile', 'w')를 시도해봤지만, 여전히 몇몇 외부 모듈들이 터미널에 출력되는 것을 막지 못하는 것 같습니다 (혹시 sys.stdout = ... 라인이 전혀 실행되지 않았을 수도 있습니다). 제가 시험했던 보다 간단한 스크립트에서는 작동하는 것을 확인했지만, 아직 웹 어플리케이션에서 시험을 해보지 못한 상태입니다.
답변 1
만약 Python 스크립트 안에서 리디렉션을 하고 싶다면, sys.stdout 를 파일 개체로 설정하는 것으로 문제를 해결할 수 있습니다.
# for python3
import sys
with open('file', 'w') as sys.stdout:
print('test')
보다 일반적인 방법은 실행 시 쉘 리디렉션을 사용하는 것입니다 (Windows와 Linux에서 동일합니다).
$ python3 foo.py > file
답변 2
파이썬은 매우 강력한 프로그래밍 언어이며, 프로그래머들이 콘솔에 출력되는 내용을 파일로 저장할 수 있도록 기능을 제공합니다. 즉, 표준 출력을 파일로 리디렉션할 수 있습니다.이 기능은 특히 유닉스 운영 체제에서 자주 사용됩니다. 이 기능은 다양한 용도로 활용되는데, 예를 들어 로그 파일을 생성하거나, 보고서를 작성하거나, 기타 유용한 정보를 수집하는 등의 작업을 수행할 수 있습니다.
리디렉션 기능을 사용하려면, 파이썬 프로그램을 실행할 때 명령어 라인에서 출력할 파일의 이름을 지정하면 됩니다. 다음은 예시 코드입니다.
```
import sys
sys.stdout = open(output.txt, w)
print(Hello, World!)
sys.stdout.close()
```
위의 코드에서는 sys.stdout을 파일 output.txt로 열고, Hello, World!를 출력했습니다. 출력 내용은 output.txt에 저장됩니다.
이 방법은 표준 출력뿐만 아니라 표준 에러도 파일로 리디렉션할 수 있습니다. 예시 코드는 다음과 같습니다.
```
import sys
sys.stderr = open(error.txt, w)
print(Error occurred!, file=sys.stderr)
sys.stderr.close()
```
위의 코드에서는 sys.stderr을 파일 error.txt로 열고, Error occurred!를 출력합니다. 출력 내용은 error.txt에 저장됩니다.
이렇게 함으로써, 파이썬을 이용해 파일 출력을 할 수 있습니다. 이를 활용하여 유용한 프로그램을 작성할 수 있습니다.