2010-12-01 2 views
0

,는 popen 수준의 출력으로 하위 프로세스의 출력을 기록 :[파이썬] 변환하는 방법/어떤 결과처럼 내가 서브 프로세스 모듈을 사용하고 파일

063.245.209.093.00080-128.192.076.180.01039 : HTTP/1.1 (302)를 찾을 수 063.245.209.093.00080-128.192.076.180.01040 : HTTP/1.1 302

발견하고 여기에 내가 쓴 스크립트입니다

import subprocess, shlex, fileinput,filecmp 
proc = subprocess.Popen('egrep \'^HTTP/\' *', shell=True,  stdin=subprocess.PIPE, stdout=subprocess.PIPE,) 
stdout_value = proc.communicate()[0] 
print 'results:' 
print stdout_value 

내 질문은 : 변환하는 방법을 /를 기록 파일로 stdout 결과?

답장을 보내 주시면 감사하겠습니다. subprocess.Popen()

+0

stdout_value를 파일에 쓰는 방법을 묻고 있습니까? 또는'stdin ='에 파일을 어떻게 전달 하는가? 나는 당신이 이전을 할 것을 제안 할 것이다 – Falmarri

+0

파일을 열고 그것에 인쇄 할까? 나는 그것이 당신이 원하는 것인지는 모르겠지만 시도해 볼 수 있습니다 : f = open ('log.txt', 'w'); print >> f, stdout_value – Kabie

답변

1
import subprocess 
import glob 

def egrep(pattern, *files): 
    """ runs egrep on the files and returns the entire result as a string """ 
    cmd = ['egrep', pattern] 
    for filespec in files: 
     cmd.extend(glob.glob(filespec)) 
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE) 
    return proc.communicate()[0] 

results = egrep(r'^HTTP/', '*') 
print 'results:' 
print results 

# write to file 
with open('result_file.txt', 'w') as f: 
    f.write(results) 
0

하나 또는 stdin, stdout의, 그리고 stderr 인수 file 객체 (또는 파일 기술자) 프로그램이 읽거나 지정된 파일에 기록하게됩니다 될 수 있습니다.

관련 문제