#!/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脚本编写者。
答案 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]
。