2013-04-12 4 views
-3

명령 값을 파일에 출력하려고합니다. 나는 시도했다 :명령의 출력을 파이썬에서 파일로 리디렉션하는 방법

threaddump() >> /dir/newdir/newfile.log 

그것은 작동하지 않는다.

그래서 어떻게 명령의 출력을 디렉토리의 파일로 리디렉션 할 수 있습니까? 파이썬의 버전은 2.3.4입니다.

+2

일반 파일 작업을 사용하여 파일에 쓰려고 했습니까? – msvalkon

+0

당신은> & 명령 $ mypymodule.py> & log.file – Greg

답변

1

접근 방법에 오해가 있습니다. 파이썬은 쉘이 아니라 단순한 인터프리터입니다. 쉘은 프로그램을 시작할 수 있으며, 환경 변수, 현재 작업 디렉토리와 같은 시작된 프로그램에 컨텍스트 데이터를 항상 제공 할 수 있지만 파일로의 리디렉션을위한 표준 IO 스트림 (stdin, stdout, stderr)도 제공 할 수 있습니다. 파이썬 함수는 호출자와 동일한 프로세스에서 실행되기 때문에 스트림을 포함하는 동일한 전역 객체를 사용할 수 있습니다.

는이 문제를 해결하기위한 몇 가지 방법으로 당신을 나뭇잎

  1. 임시 파일로 sys.stdout을 리디렉션합니다. 이것은 호출 된 코드를 변경하는 것이 좋은 옵션이 아닌 경우에 특히 유용합니다. 그렇지 않으면 전체 프로세스에 영향을주기 때문에이 작업을 수행하지 않을 것입니다.

  2. 함수에서 데이터를 반환하고 호출자 사이트의 파일로 인쇄하십시오.

  3. 함수가 인쇄 할 함수에 파일을 전달하십시오.

[1] 환경 변수, 작업 디렉토리 또는 표준 IO 스트림을 전달하는 방법이없는 MS Windows CE 만 예외입니다.

+0

어떤 대답을 사용하여 쉽게 이것을 할 수 있습니까 ??? 몇 가지 옵션을 시도했지만 CRON 작업이 실행 중이고 오류가 발생했을 때 출력이 성공한 최신 실행으로 덮어 쓰여지고 있기 때문에> & doesnt는 잘 작동합니다. – ameya

+0

@msvalkon 일반 파일 작업이란 무엇입니까? ??? – ameya

+0

세 가지 옵션 중 대답이 아닌 것은 무엇입니까? 그리고 "어느 정도의 선택 사항"을 시도 했습니까? 또한, ">"리다이렉션은 파이썬이 아니라 호출 쉘에서 차이점에 관한 나의 설명을 참조하십시오. –

관련 문제