2011-06-10 5 views
1

Ignacio (Python remove spaces and append)의 조언에 따라 os.system이 아닌 subprocess을 사용하려면 아래 명령을 변환하려고합니다.os.system 대신 파이썬 서브 프로세스 사용하기

스크립트 : 내가 생각 것 os.system("/usr/local/bin/growlnotify -n emesene -a emesene -t """+title+""" -m """+text+"""""")

: subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True)

하지만 나던 작품. 이 아이디어를 얻으려면 어떤 아이디어가 필요합니까? 파이썬 문서를보고 여기를 보았지만 알아낼 수는 없습니다!

은 BTW는 쉘 명령에 인용되지 않은 공간이 모든 곳

subprocess.call(['/usr/local/bin/growlnotify', '-n', 'emesene', '-a', 'emesene', '-t', title, '-m', text], shell=True) 

이 다른 분할 에메 센 메신저 알림 시스템

+0

는 이그나시오의 답변을 받아 들일 생각 링크 된 질문에서 –

+0

아내는 내가 가지고 있다고 생각했습니다. –

답변

4

목록을 사용하여 명령을 전달할 때 "shell = True"를 원하지 않습니다. 나는 단지 제레미 은행의 게시물에 같은 댓글을 달았 것 (shlex.split에 대한 자신의 문은 가장 주목할만한 때문에),하지만 난 현재 그렇게 할 수있는 담당자가 없습니다 :/

subprocess.call(['/usr/local/bin/growlnotify', '-n', 'emesene', '-a', 'emesene', '-t', title, '-m', text]) 
+0

완벽하게 작동합니다. –

5

대신

subprocess.call(['/usr/local/bin/growlnotify', '-n emesene', '-a emesene', '-t ""+title+"""', '-m """+text+"""""'], shell=True) 

사용에서 변수 titletext있는 목록 항목.

shlex.split 함수는 쉘 스타일 명령에서 Subproces가 예상하는 정렬 목록으로 변환하는 데 사용할 수 있습니다.

+0

작동하지 않습니다. 빈 공지를하므로 변수를 사용하지 않는 것 같습니다. –

관련 문제