기본적으로 내 프로그램을 stdout으로 원하지만 파일에 쓰는 옵션을 제공합니다. 내 자신의 인쇄 기능을 만들고 출력 파일이 있다는 테스트를 호출해야합니까? 아니면 더 나은 방법이 있습니까? 저에게는 비효율적 인 것처럼 보이지만 모든 인쇄 호출에 대해 테스트한다면 추가 호출이라고 생각할 수 있습니다. 나는이 스크립트의 적어도 장기적으로는 이것이 중요하지 않다는 것을 알고 있지만, 나는 좋은 습관을 배우려고하고있다.출력 리디렉션을 처리하는 가장 좋은 방법은 무엇입니까?
답변
파일 개체에 쓰고 프로그램이 시작되면 해당 개체가 sys.stdout 또는 사용자가 지정한 파일을 가리 키도록하십시오.
마크 바이어스의 대답은 유닉스와 비슷합니다. 대부분의 명령 줄 도구는 stdin과 stdout을 사용하고 사용자가 적합하다고 생각하는 방향으로 리디렉션하도록합니다.
인쇄물을 사용하여 표준 출력하십시오. 다음,
python foo.py > output.txt
우수 점, 나는 그것을 생각하지 않았다. 그러나 나는 아직도 파일에 들어 가지 않기를 원하는 stdout에 상태 메시지를 출력하기 때문에이 특별한 경우에는 그렇게 할 수 없다. – kryptobs2000
@ kryptobs2000 : 상태 및 오류 메시지에 대해 stderr이 있다는 것을 알고 있습니까? 상태 메시지를'sys.stdout'에 보내는 점은 무엇입니까? – tzot
내 반응이 임시 파일에 출력하는 것 중 하나 STDIO 해당 덤프하거나 요청한 곳으로 이동 : 사용자가 파일에 출력을 리디렉션하기를 원한다면 그들은 그렇게 할 수 있습니다.
나는 당신이 할 수있는, 당신은 서브 프로세스 모듈을 사용하는 경우 당신은 당신의 명령 줄에서 취할 수있는 옵션에 따라 다음 로깅 모듈과 logging.handlers ... 스트림 출력 파일 등
를 사용하는 것이 좋습니다 열린 파일 객체에 대한 stdout 옵션을 갖는다. 이렇게하면 프로그램 내에서 파일로 리디렉션 할 수 있습니다.
import subprocess
with open('somefile','w') as f:
proc = subprocess.Popen(['myprog'],stdout=f,stderr=subprocess.PIPE)
out,err = proc.communicate()
print 'output redirected to somefile'
아니요, 별도의 인쇄 기능을 만들 필요가 없습니다. 파이썬 3.x의에서
# suppose f is an open file
print >> f, "hello"
# now sys.stdout is file too
print >> sys.stdout, "hello"
:
print("hello", file=f)
# or
print("hello", file=sys.stdout)
그래서 당신이 정말로 파일과 표준 출력을 차별화 할 필요가 없습니다 파이썬 2.6에서는이 구문을 가지고있다. 그들은 동일합니다.
출력 장난감 예는, "안녕하세요"방법은 당신이 원하는 : 인쇄 절차는 표준 출력 또는 파일로 작동하는지의 추상화되어
#!/usr/bin/env python3
import sys
def produce_output(fobj):
print("hello", file=fobj)
# this can also be
# fobj.write("hello\n")
if __name__=="__main__":
if len(sys.argv) > 2:
print("Too many arguments", file=sys.stderr)
exit(1)
f = open(argv[1], "a") if len(argv)==2 else sys.stdout
produce_output(f)
하는 것으로.
와우, 고마워, 나는 그걸 몰랐다. 파이썬 3 사용하고 아주 우아한 솔루션을 보인다. – kryptobs2000
- 1. Selenium에서 리디렉션을 단정하는 가장 좋은 방법은 무엇입니까?
- 2. API 요청을 처리하는 가장 좋은 방법은 무엇입니까?
- 3. R에서 시계열을 처리하는 가장 좋은 방법은 무엇입니까?
- 4. 여러 작업을 처리하는 가장 좋은 방법은 무엇입니까?
- 5. OpenGL에서 FBO를 처리하는 가장 좋은 방법은 무엇입니까?
- 6. Python에서 HTML을 처리하는 가장 좋은 방법은 무엇입니까?
- 7. MVVM에서 이벤트를 처리하는 가장 좋은 방법은 무엇입니까
- 8. 서버에서 이미지를 처리하는 가장 좋은 방법은 무엇입니까?
- 9. 타이머를 처리하는 가장 좋은 방법은 무엇입니까?
- 10. db 쿼리를 처리하는 가장 좋은 방법은 무엇입니까
- 11. 연락처 양식을 처리하는 가장 좋은 방법은 무엇입니까?
- 12. 리소스를 처리하는 가장 좋은 방법은
- 13. C++에서 블록 암호를 처리하는 가장 좋은 방법은 무엇입니까? (Crypto ++)
- 14. 오류를 처리하는 가장 좋은 방법
- 15. 'this'의 변경을 처리하는 가장 좋은 방법은
- 16. 몇 가지 자동 리디렉션을 처리하는 적절한 방법은 무엇입니까?
- 17. 오류 메시지를 처리하는 가장 좋은 방법
- 18. 기본 출력 장치에서 사운드를 녹음하는 가장 좋은 방법은 무엇입니까? [C#]
- 19. 게시판 형식으로 출력 양식을 캡처하는 가장 좋은 방법은 무엇입니까?
- 20. C#의 조건부 종속성을 처리하는 가장 좋은 방법은 무엇입니까
- 21. 다른 유형의 사용자를 처리하는 가장 좋은 방법은 무엇입니까?
- 22. ASP/ASP.NET 쓰기 권한을 처리하는 가장 좋은 방법은 무엇입니까?
- 23. 플랫폼/티어간에 중복 코드를 처리하는 가장 좋은 방법은 무엇입니까?
- 24. WinForm에서 CheckBox 컨트롤을 처리하는 가장 좋은 방법은 무엇입니까?
- 25. PRISM을 사용한 탐색을 처리하는 가장 좋은 방법은 무엇입니까?
- 26. Ruby에서 비 영어 문자를 처리하는 가장 좋은 방법은 무엇입니까?
- 27. GtkMenu 활성화 콜백을 처리하는 가장 좋은 방법은 무엇입니까?
- 28. MySQL에서 다중 배열 데이터를 처리하는 가장 좋은 방법은 무엇입니까?
- 29. 레이크 : 정의되지 않은 매개 변수를 처리하는 가장 좋은 방법은 무엇입니까?
- 30. emacs에서 이름이 비슷한 여러 파일을 처리하는 가장 좋은 방법은 무엇입니까?
감사합니다. 이것은 아마도 제가 할 일입니다. – kryptobs2000