【问题标题】:'md5sum' and pipe doesn't work correctly'md5sum' 和管道无法正常工作
【发布时间】:2014-12-20 15:49:14
【问题描述】:

您好,刚刚从书中复制了这行代码:“think python”(我将文件名从 'book.tex' 编辑为 'words.txt'

import os
filename = 'words.txt'
cmd = ' md5sum ' + filename
fp = os.popen(cmd)
res = fp.read()
stat = fp.close()

在书中:

>>> print res
1e0033f0ed0656636de0d75144ba32e0 book.tex
>>> print stat
None

但对我来说:

>>> print res

>>> print stat
1

为什么会发生这种情况(打印资源打印空白行,打印统计打印 1)

【问题讨论】:

  • 它对我有用;你确定你有一个md5sum 命令并且words.txt 存在吗?
  • @ReutSharabani: fp.close() 不会返回退出代码。
  • 为我工作,你确定文本文件真的存在吗?
  • @MartijnPieters 认为是的,现在阅读
  • 您使用的是什么版本的 Python?我永远无法让stat 等于1

标签: python pipe


【解决方案1】:

Windows 不附带md5sum 命令。您可以从 Internet 上找到类似的实用程序。这样的事情可能会做:http://www.pc-tools.net/win32/md5sums/

【讨论】:

    【解决方案2】:

    os.open 已弃用 (https://docs.python.org/2/library/os.html#os.popen)。建议切换到子进程,即:

    >>> import subprocess
    >>> subprocess.check_output(['md5sum', 'words.txt'])
    1e0033f0ed0656636de0d75144ba32e0 book.tex
    

    【讨论】:

    • OP 正在关注一本特定的书,而这个答案并没有说明为什么 OP 看到的输出与其他人不同。
    • 也许......但它已被弃用。最好习惯新方式,而不是在旧方式上旋转(之后他甚至可能会发现它最初被弃用的原因)。
    猜你喜欢
    • 2020-01-10
    • 2018-06-20
    • 1970-01-01
    • 2023-01-19
    • 2018-12-11
    • 2017-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多