首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在文件中捕获os.system()的输出

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

Stack Overflow用户
提问于 2015-03-12 21:32:14
回答 2查看 1.4K关注 0票数 1

我不能使用子进程,因为我需要运行windows桌面快捷方式。这对我很有用:

代码语言:javascript
复制
os.system("C:/Users/Administrator/Desktop/Neptune_Osprey_OCD_Daemon_xtensa_9.lnk")

我需要在命令提示符中捕获上面的桌面短文的输出。但是我不能用os.system做到这一点。或者,我尝试使用os.popen,但仍然没有成功:

代码语言:javascript
复制
os.popen("C:/Users/Administrator/Desktop/Neptune_Osprey_OCD_Daemon_xtensa_9.lnk" > output.log 2 > OCD_Open_Log.txt)
EN

回答 2

Stack Overflow用户

发布于 2015-03-12 23:23:03

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

代码语言:javascript
复制
 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 

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

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

票数 0
EN

Stack Overflow用户

发布于 2015-03-12 22:01:52

使用popen的结果对象读取其输出:

代码语言:javascript
复制
import os

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

此外,您还可以打开命令来读取,打开来写入,并将数据传递给命令的stdin

代码语言:javascript
复制
p = os.popen('command', 'rw')
p.write(my_input)
my_output = p.read()
p.close()

但是,在os模块中使用popen是不推荐的。但是,受您的条件限制,不要使用subprocess,这没有什么不同。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29011194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档