【问题标题】:Trouble with os.popenos.popen 的问题
【发布时间】:2017-08-07 11:45:39
【问题描述】:

我正在使用 Think Python 学习 Python。我遇到的问题是当我尝试示例中的代码时:

import os
cmd = 'ls -l'
fp = os.popen(cmd)
res = fp.read()
stat = fp.close()
print res

但是,print res 只返回一个空字符串,它应该以长格式显示当前目录的内容。 print stat 返回1 表示过程中有问题,但没有错误信息。我做错了什么?

【问题讨论】:

  • 你在 linux 中尝试这个对吗?只是问问。
  • 来自os.popen()2.6 版后已弃用:此功能已过时。使用subprocess 模块。尤其要检查用子流程模块替换旧功能部分。
  • 谢谢大家。没想到我的问题这么快就得到了回答。

标签: python python-2.7 popen


【解决方案1】:

我的第一个猜测是您在 Windows 系统上工作。如果将 'ls -l' 替换为 'dir' 则它应该可以在 Windows 上运行。

【讨论】:

    【解决方案2】:

    您的代码工作正常,只是您正在使用 Windows 系统。 我更正了您的代码:

    import os
    
    cmd = 'dir'
    fp = os.popen(cmd)
    res = fp.read()
    stat = fp.close()
    print res
    print stat
    

    【讨论】:

      【解决方案3】:

      它应该在 Python 2.7 中工作(至少)。

      无论如何,它没有回答为什么它不起作用(但我认为这不是 Python 或 os.popen() 问题,而是另一个更元的问题)但是,来自 os.popen() doc

      2.6 版后已弃用:此功能已过时。使用 subprocess 模块。特别检查替换旧功能 子流程模块部分。


      如果您使用的是 Windows,请使用 dir 而不是 ls

      【讨论】:

        猜你喜欢
        • 2012-06-17
        • 2021-05-24
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 2013-07-28
        • 1970-01-01
        • 2011-02-18
        • 1970-01-01
        相关资源
        最近更新 更多