2012-09-06 4 views
1

내 컴퓨터에서 터미널에서 명령을 받아 값 목록을 반환하는 소프트웨어가 있습니다.파일에 터미널 출력하기

pdv -t filename 

내가 파이썬 프로그램의 일환으로 실행하려고 : 그것을 실행하려면

는, 내가 좋아하는 뭔가를 입력해야합니다. 나는 다음을 실행하면 :

os.system('pdv -t %s' % (epoch_name)) 

는 내가 (epoch_name 파일 이름에 대한 변수 이름) 내 터미널에 돌려 원하는 값을 얻는다. 그러나 결과를 파일에 쓰려고하면 :

os.system('pdv -t %s % "(epoch_name)" > 123.txt') 

파일 123.txt가 생성되지만 비어 있습니다.

나는 내가 '및/또는'문자를 잘못두기 오전 알고 있지만, 나는 그들이 어디로 가야 알아낼 수 없습니다.

어떤 도움을 기꺼이받을 것입니다!

답변

2

나는 이것이 당신이 원하는 것을 믿는다. os.system()에 인수가 OS에 명령을 나타내는 문자열이어야합니다.

os.system('pdv -t %s > 123.txt' % epoch_name) 

subprocess 모듈이 있습니다.이 모듈은 출력을 파이썬으로 처리 할 계획이 있는지 살펴볼 가치가 있습니다.

+0

그게 효과가! 모두 고마워요 – user1551817

1

를 참조하면 명령 script 당신에게 사용할 수 있습니다. 그것은 당신이 무엇을해야 할 수도 있습니다.

+0

"script"는 python 명령입니까? – user1551817

+0

이것은 프로그램의 콘솔 출력을 캡처하도록 설계된 unix/linux 시스템 명령입니다. –

+0

제가 사과 기계에서 일하는 것이 중요합니까? – user1551817

3

그것의 더 나은 표준 출력 키워드 인수,

import subprocess 
subprocess.call(['pdv', '-t', filename, '>', dest_file_name]) 
2
from subprocess import Popen 
proc = Popen(['pdv', '-t', epoch_name], stdout = open('123.txt', 'w')) 
7

당신은 subprocess.call를 사용할 수 os.system을 그 하위 프로세스 모듈을 사용합니다 :

import subprocess 

cmd = ['ls', '-l'] 

with open('output.txt', 'w') as out: 
    return_code = subprocess.call(cmd, stdout=out) 
+0

오, 내 솔루션보다 더 좋아. '와'바위. +1 – tMC

+0

out = open ('output.txt', 'w')와 다른가요? – user1311069

+1

@ user1311069 : 파일 객체의 컨텍스트 관리자 인터페이스를 사용했습니다. 예를 들어 첫 번째 예제는 http://eigenhombre.com/2013/04/20/introduction-to-context-managers/ 또는 http://preshing.com/20110920/the-python-with-statement를 참조하십시오. -by-example/ –

0

또는 당신은 sys.stdout 수표를 사용할 수 있습니다 이 문서는 DiveIntoPython에서 또는 here 토론을 통해 도움이됩니다.

import sys 

print 'Dive in' 
saveout = sys.stdout 
fsock = open('out.log', 'w') 
sys.stdout = fsock 
print 'This message will be logged instead of displayed' 
sys.stdout = saveout 
fsock.close()