2009-12-08 2 views
2
#!/usr/bin/env python 
import os, sys, subprocess, time 
while True:  
    print subprocess.call("xsel", shell=True); 
    time.sleep(1); 

클립 보드에서 항목을 가져 와서 매 1 초마다 인쇄합니다.파이썬 문자열에서 마지막 0을 제거하십시오.

결과 :이 마지막 0을 반환하지만, 분명히 따라서 0은 문자열을 정수한다 (INT는 제거하지 않은) 문자열 스트립을 사용에서 저를 중단 이유를 모르겠어요

copied0 
entry0 
from0 
clipboard0 

?

위의 결과에서 파이썬 문자열에서 마지막 0을 제거 할 수있는 방법은 무엇입니까?

저는 파이썬으로 변환하는 BASH 스크립터입니다. 그것의 결과를 인쇄 "XSEL"을 실행처럼

답변

4

마크가 지적한 바와 같이, subprocess.call()는이 같은

뭔가 내가 위와 같이 반복적으로 그것을 제거 할 필요가

#!/usr/bin/env python 
import os, sys, subprocess, time 
while True: 
    p=subprocess.Popen(["xsel"],stdout=subprocess.PIPE) 
    print p.stdout.read() 
    time.sleep(1) 
+0

감사합니다 XD - 그래서 다른 하위 프로세스를 사용해야합니다. – torger

+0

그리고 우리는 성공했다 : print subprocess.Popen ([ "xsel"], stdout = subprocess.PIPE) .stdout.read() – torger

+0

xsel의 출력을 알아낼 필요가 있다고 가정하고있다. 터미널에 인쇄하십시오. –

2

"copied0".rstrip("0") 사실

작동합니다, 당신은 더 나은 다음과 같이 수행이 늘 화면이 나에게 보이는

import os, sys, subprocess, time 
while True:  
    _ = subprocess.call("dir", shell=True); 
    time.sleep(1); 
+0

작업을해야 원하는 것을하지 않습니다. 귀하의 게시물에서 이것을 만들었습니다 : entry = subprocess.call ("xsel", shell = True); \t "entry".rstrip ("0entry") - 작동하지만 우아한 것은 아닙니다. – torger

+0

시도해 보았습니다 - AttributeError : 'int'객체에 'rstrip'속성이 없습니다 - 질문의 이유입니다. – torger

+0

위의 작업을 수행 한 이유와 동일한 오류가 발생합니다. – torger

2

에 리턴 코드를 표시 stdout으로 리턴 코드 (0)를 표준 출력으로 출력하십시오. 파이썬에서 클립 결과를 얻지 못하고 있습니다.

아마도 subprocess.popen이 필요하고 stdout을 캡처해야합니다.

1

0이 항상 문자열의 끝 부분에 있고 마지막 문자 만 제거하기를 원한다면 st=st[:-1]을 수행하면됩니다.

끝 부분에 0이 있는지 확실하지 않으면 if st[-1]==0: st=st[:-1]을 수행 할 수 있습니다.

4

편집 : - 0 것을 당신은 (XSEL의 실제 출력 후)보고있는 subprocess.call 문자열을 반환하지 않습니다하지만 INT는. 대신, 사용

print subprocess.Popen('xsel', stdout=subprocess.PIPE).communicate()[0] 
+0

세미 콜론을 잃었습니다. – torger

+0

TypeError : 'int'객체는 구독 취소 가능합니다. - 내가 무엇을 잘못하고 있는지 알지 못합니다. 아마도 호출이 데이터를 제공하는 방식 일 것입니다. – torger

2

각 라인에서 0 새로운 라인 피드는 제로 subprocess.call에서 셀의 리턴 코드는 파이썬 인쇄 명령에 의해 인쇄 된 유일한 것들입니다. 쉘 자체는 먼저 결과를 stdout으로 출력합니다. 이것이 바로 단어를 보는 이유입니다.

편집 : 출현에 대한 S Mark의 게시물에있는 의견을 참조하십시오.

관련 문제