【问题标题】:How do I get data from stdin using os.system()如何使用 os.system() 从标准输入获取数据
【发布时间】:2008-12-09 00:48:28
【问题描述】:

我发现使用脚本从维基百科下载文本的唯一可靠方法是使用 cURL。到目前为止,我这样做的唯一方法是致电os.system()。即使输出正确显示在 python shell 中,我似乎无法返回除退出代码(0)以外的任何内容。或者有人可以展示如何正确使用urllib

【问题讨论】:

    标签: python shell curl urllib os.system


    【解决方案1】:

    来自Dive into Python:

    import urllib
    sock = urllib.urlopen("http://en.wikipedia.org/wiki/Python_(programming_language)")
    htmlsource = sock.read()
    sock.close()
    print htmlsource
    

    这将打印出 Python 维基百科文章的源代码。我建议您查看 Dive into Python 了解更多详细信息。

    使用来自Python Library Reference: 的 urllib2 的示例

    import urllib2
    f = urllib2.urlopen('http://www.python.org/')
    print f.read(100)
    

    编辑:您也可能想看看wget.
    Edit2:根据 S.Lott 的建议添加了 urllib2 示例

    【讨论】:

    • 谢谢,内置的帮助浏览器几乎永远无法理解。
    • urllib2 做了几乎相同的事情,而且它更优雅地处理重定向等事情。
    • @S.Lott 我同意。我只是在寻找 GameFreak 可以从中学习更多的资源,而不仅仅是从中复制代码,结果我想到的第一个资源 Dive into Python 使用了 urllib。
    【解决方案2】:

    回答问题, Python 有一个 subprocess 模块,它允许您与衍生的进程进行交互。http://docs.python.org/library/subprocess.html#subprocess.Popen

    它允许您读取被调用进程的标准输出,甚至可以将项目发送到标准输入。

    但是,正如您所说,urllib 是一个更好的选择。如果你 searchstackoverflow 我相信你会发现至少 10 个其他相关问题......

    【讨论】:

      【解决方案3】:

      作为 urllib 的替代品,您可以使用 libCurl Python bindings

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-04-28
        • 2013-09-15
        • 2012-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多