os.system输出太多了?

时间:2011-05-16 11:42:42

标签: python system

我正在尝试这样做,以获取剪贴板的内容

clipboard_data = os.system("pbpaste")

但这不起作用!它不仅不存储var中的任何内容(某些文本)(返回0),而且还在屏幕上输出命令的结果。

如何让它按我想要的方式工作?

3 个答案:

答案 0 :(得分:4)

您应该查看subprocess module中为Python提供的内容。在2.7及更高版本中,您可以使用以下内容实现所需,例如:

from subprocess import check_output
clipboard_data = check_output(["pbpaste"])

...或在早期版本中执行:

from subprocess import Popen, PIPE
clipboard_data = Popen(["pbpaste"], stdout=PIPE).communicate()[0]

缺少一些错误检查,但你明白了......

答案 1 :(得分:1)

无论你想要实现什么(我不熟悉pbpaste和恕我直言,有better ways to access the clipboard),os.system返回它正在调用的进程的退出状态,不是它的标准输出。

您应该使用subprocess.Popen(及其communicate方法)来获取标准输出。

答案 2 :(得分:-1)

一种简单的方法是使用

f = os.popen(command)

方法,它返回一个像object这样的文件,然后你可以使用f.readline()方法返回一个字符串。该方法非常简单,不应该用于处理大量数据,因为它使用了大量的计算机CPU功率。