【发布时间】:2011-10-10 20:44:40
【问题描述】:
在交互式解释器中调用 os.system() 时,您可以在控制台中看到它输出的内容。 但就我而言,我需要将 sys.stderr 和 sys.stdout 更改为另一个类的实例,并在 exec 语句中调用 os.system 函数。问题是,我看不到它的输出。它不写入 stderr 也不写入 stdout。 所以我的问题是: os.system() 的打印输出到哪里去了?
谢谢, 尼克拉斯
【问题讨论】:
在交互式解释器中调用 os.system() 时,您可以在控制台中看到它输出的内容。 但就我而言,我需要将 sys.stderr 和 sys.stdout 更改为另一个类的实例,并在 exec 语句中调用 os.system 函数。问题是,我看不到它的输出。它不写入 stderr 也不写入 stdout。 所以我的问题是: os.system() 的打印输出到哪里去了?
谢谢, 尼克拉斯
【问题讨论】:
它转到文件描述符 1 或 2,具体取决于它是输出到 stdout 还是 stderr。如果您需要更好地控制输出,那么您应该使用subprocess。
【讨论】:
os.pipe() 创建一个管道并使用select 查看是否有任何数据要从中读取。