Python总是返回False

时间:2019-02-23 03:40:20

标签: python

我有一个脚本,该脚本获取给定文件的md5值,另一个脚本检查另一个文件中是否有我预先计算的md5。 计算器:

move_uploaded_file($_FILES['webcam']['tmp_name'], 'webcam.jpg');

比较器:

import sys
import hashlib

BUF_SIZE = 65536

md5 = hashlib.md5()
sha1 = hashlib.sha1()

with open(sys.argv[1], 'rb') as f:
    while True:
        data = f.read(BUF_SIZE)
        if not data:
            break
        md5.update(data)
        sha1.update(data)

print("{0}".format(md5.hexdigest()))

即使值匹配,比较器脚本也始终返回False。

2 个答案:

答案 0 :(得分:7)

os.system()不返回已执行命令的输出。返回值是退出代码。

如果您想捕获输出,那么最好使用the subprocess module。 (并且在这样做时,请确保在输出中考虑尾随空格或换行符。)

(当然,在这种情况下,由于您要从另一个脚本中执行一个Python脚本,因此可以对代码进行重新处理,从而无需使用os.system()或{{1}中的任何内容}。如果您更改了计算器脚本以将代码移至函数中并返回哈希字符串而不是将其打印出来,则比较器脚本应仅导入该代码并直接执行该函数。)

答案 1 :(得分:0)

使用os.popen(“ cmd”)。read()代替os.system

import os
if os.popen("python /home/jamesestes/Desktop/hash.py /home/jamesestes/Desktop/Untitled-1.py").read() == "85e1a2bfe4347c7e380059cc15591164":
    print("OK")
else:
    print("FAILED")