从python字符串中删除最终0

时间:2009-12-08 04:34:32

标签: python string integer subprocess popen

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

从剪贴板中取出一个条目并每隔1秒打印一次。

结果:

copied0
entry0
from0
clipboard0

我不知道为什么它返回最后的0,但它显然阻止我使用字符串条带(int没有条带),因此0使字符串成为整数?

如何在上面的结果中从python字符串中删除最后的0?

我是转换为python的BASH脚本编写者。

6 个答案:

答案 0 :(得分:4)

修改subprocess.call没有返回字符串,而是返回一个int - 你看到0(在xsel的实际输出之后)。请改用:

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

答案 1 :(得分: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)

答案 2 :(得分:2)

"copied0".rstrip("0")应该有效

实际上,你最好这样做,它不会在屏幕上显示返回代码

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

答案 3 :(得分:2)

在我看来它正在运行“xsel”,它将结果打印到stdout,然后将返回代码(0)打印到stdout。你没有得到python的剪辑结果。

你可能想要subprocess.popen并捕获stdout。

答案 4 :(得分:2)

每行的0和新换行符是python print命令打印的唯一内容,其中零是来自subprocess.call的shell返回码。 shell本身首先将结果打印到stdout,这就是你看到单词的原因。

编辑:请参阅S Mark的帖子中对顿悟的评论。

答案 5 :(得分:1)

如果零始终位于字符串的末尾,因此您只需要删除最后一个字符,只需执行st=st[:-1]

或者,如果您不确定最后会有零,则可以if st[-1]==0: st=st[:-1]