捕获文件中os.system()的输出

时间:2015-03-12 13:32:14

标签: python python-2.7 python-3.x

我无法使用子进程,因为我需要运行Windows桌面快捷方式。这对我有用:

os.system("C:/Users/Administrator/Desktop/Neptune_Osprey_OCD_Daemon_xtensa_9.lnk")

我需要捕获命令提示符下面的上述桌面短信的输出。但我无法用os.system做到这一点。或者我尝试使用os.popen但仍然没有成功:

os.popen("C:/Users/Administrator/Desktop/Neptune_Osprey_OCD_Daemon_xtensa_9.lnk" > output.log 2 > OCD_Open_Log.txt)

2 个答案:

答案 0 :(得分:0)

这是一个部分答案,只剩下一步了:

 p = os.popen('"C:/Users/Administrator/Desktop/Neptune_Osprey_OCD_Daemon_xtensa_9.lnk" 2> OCD_Log.txt') 
while 1:
 line = p.readline()
 if not line: break
 print line 

只有当我通过执行'Ctrl + c'退出命令提示符时,才会将命令提示符中运行的快捷方式的输出写入OCD_Log.txt但是。并且OCD_Log.txt也在文件末尾用'^ C'编写。

代码被挂起,因为应用程序仅在命令提示符关闭或在命令提示符下完成Ctrl + c时退出。有什么建议可以克服这最后一步吗?

答案 1 :(得分:-1)

使用popen生成的对象来读取其输出:

import os

p = os.popen('ls .')
stdout = p.read()
p.close()

此外,你可以打开阅读的命令进行写作,将数据传递给命令stdin

p = os.popen('command', 'rw')
p.write(my_input)
my_output = p.read()
p.close()

然而,不推荐使用popen模块中的os。但是,受你的条件限制*不要使用subprocess,这没有任何区别。