如果hashs
像你说的那样是一个整数,那么你应该有if hashs == 1:
,而不是'1'
。 '1'
是一个字符串。
这可能是您复制和粘贴代码的方式,但该if
语句看起来也比它应该的多一个空格。您应该决定制表符约定、2 个空格、4 个空格等,并始终如一地使用它。
编辑: 循环是不必要counter
的while
,导致无限循环。
这段代码对我有用:
import hashlib
def main():
hashs = 0
read = str(raw_input('Please enter filename for input : '))
output = str(raw_input('Please enter filename for output : ' ))
hashs = int(raw_input('Select a Hash to convert to : '))
if (output != ''):
fileObj = open(output,"a")
if (read != ''):
numlines = 0
for line in open(read):
numlines +=1
print ('Found ', numlines, ' lines to convert\n')
fp = open(read)
for i, line in enumerate(fp):
if hashs == 1:
line = line.encode('UTF-8')
hashc = hashlib.md5(line).hexdigest()
if hashs == 2:
line = line.encode('UTF-8')
hashc = hashlib.sha1(line).hexdigest()
if hashs == 3:
line = line.encode('UTF-8')
hashc = hashlib.sha224(line).hexdigest()
if hashs == 4:
line = line.encode('UTF-8')
hashc = hashlib.sha256(line).hexdigest()
if hashs == 5:
line = line.encode('UTF-8')
hashc = hashlib.sha384(line).hexdigest()
if hashs == 6:
line.encode('UTF-8')
hashc = hashlib.sha512(line).hexdigest()
fileObj.write(hashc)
fileObj.write('\n')
main()
我的输入文件包含:
test file hash this yo
come on and hash, if you want to jam
mankind is to be surpassed
这是我的终端输入和输出:
Please enter filename for input : input
Please enter filename for output : outf
Select a Hash to convert to : 2
('Found ', 3, ' lines to convert\n')
然后我的输出文件包含:
222bc2522767626e27c64bb2b68a787f9e4758cd
f3ac7272e6d681c331580368e4b189445b9a9451
fdca95f9c68df6216af6d2eeb950a3344812bd62
编辑我使用的是 python 2.7,所以你应该将你的输入从 更改回raw_input
,input
并且你的 print 语句将正常工作。Python 2.7 只是认为我想打印一个元组。