代码之家  ›  专栏  ›  技术社区  ›  Filip Ekberg

将python系统调用作为字符串结果

  •  6
  • Filip Ekberg  · 技术社区  · 16 年前

    我想使用 os.system("md5sum myFile") 并让结果从os.system返回,而不是仅仅运行在一个响应的子shell中。

    简而言之,我想这样做:

    resultMD5 = os.system("md5sum myFile")
    

    结果中只有MD5sum,没有回音。

    3 回复  |  直到 16 年前
        1
  •  11
  •   Douglas Leeder    16 年前

    subprocess 比使用更好 os.system os.popen

    import subprocess
    resultMD5 = subprocess.Popen(["md5sum","myFile"],stdout=subprocess.PIPE).communicate()[0]
    

    或者你自己用 hashlib 模块。

    import hashlib
    resultMD5 = hashlib.md5(open("myFile").read()).hexdigest()
    
        2
  •  0
  •   hyperboreean    16 年前

    您可能应该使用子进程模块来替换os.system。

        3
  •  0
  •   Van Gale    16 年前
    import subprocess
    
    p = subprocess.Popen("md5sum gmail.csv", shell=True, stdout=subprocess.PIPE)
    resultMD5, filename = p.communicate()[0].split()
    print resultMD5