2013-05-13 1 views
0

을 파일로 리디렉션 : 궁금, 나는 보통과 같이 실행하는 것이, 출력 내가 스크립트, <code>update_file</code>이

sudo update_file (file) > ./logs/(file) &

올바른 구문이 /가 가능하며,이를 호출하는 것 스크립트를 파이썬 스크립트에서 가져온 다음 여전히 update_file의 출력을 파일로 리디렉션하여 시스템 작업으로 생성하게하십시오.

편집 : 나는 이것을 여러 (file)에 대해 실행하므로 변수로 전달하고자합니다.

+0

당신이 종료는 파이썬 스크립트 후 계속 실행하도록 뜻 "이 시스템 작업으로 만든"? –

답변

1

먼저 subprocess 모듈은 Python에서 프로그램을 실행하는 방법입니다. 문서의 Replacing Older Functions with the subprocess Module 섹션은 일반적인 셸 기능을 Python으로 변환하는 방법을 보여줍니다.

& 작업을 배경으로 사용하기 때문에 Popen을 만들고 나중에 작업을 처리해야합니다. 그래서 :

jobs = [] 

# ... each time you want to run it on a file ... 

jobs.append(subprocess.Popen(['sudo', 'update_file', file], 
          stdout=open(os.path.join('logs', file), 'w')) 

# ... at exit time ... 

for job in jobs: 
    job.wait() 
    job.stdout.close() 
2
import subprocess 

subprocess.call("sudo update_file(file)",stdout=open("logs/(file)","w")) 

어쩌면?

+0

[popen] (http://docs.python.org/2/library/subprocess.html#popen-constructor)이 원하는 내용이 될 수 있습니까? –

+0

그는'(file)'이 변수가되기를 원합니다. 또한'&'는 그가 그것을 끝내기를 기다리지 않으려 함을 의미하므로'호출'은 여기에 옳지 않습니다. 그리고 매개 변수 사이의 공백 중 하나를 제거했습니다. 그리고 정말로 POSIX 플랫폼에서 문자열이 아닌 params리스트를 사용하고 싶습니다. 그렇지 않으면 파일 변수를 직접 이스케이프 처리해야합니다. – abarnert

+0

그래, 내가 그걸 좀 더 명확하게하기 위해 대답 한 후에 편집 했어. 어쨌든 네 대답은 맞다. :) –

관련 문제