所以目前我在过去的几个小时里遇到了问题。我查看了很多堆栈溢出帖子并尝试了所有建议。我的问题是,我有一个程序可以从文本文件中获取单词并为它们提供MD5加密。
fileName = raw_input("> ")
if fileName.endswith(".txt") or fileName.endswith(".lst"):
fopen = open(fileName, 'r')
else:
fileName = fileName + ".txt"
fopen = open(fileName, 'r')
m = hashlib.md5()
for line in fopen:
sleep(1)
m.update(line)
encHash = m.hexdigest()
hashed = [line, encHash]
new_line = []
for elem in hashed:
new_line.extend(elem.strip('\n').split(' '))
searchfile = open("Passwords.txt").read()
if line in searchfile:
print ""
else:
fopen = open("Passwords.txt", 'a')
fopen.write(str(hashed))
fopen.write("\n")
fopen.close
print str(new_line)
现在你可以看到,我已经处理了输出的新行字符。但加密版仍然有\ n最后。因此,而不是“12345”被加密“12345 \ n”是。
我尝试过rstrip()和strip()。但它似乎不起作用!任何帮助将不胜感激。
由于
保
修改 我不知道我做了什么,我只是重新编写代码并且工作正常!感谢您的所有建议。
elif choice == "2":
os.system('clear')
fileName = raw_input('Filename: ')
fopen = open(fileName, 'rb')
for line in fopen:
line = line.rstrip('\n')
enc = hashlib.md5()
enc.update(line)
encHash = enc.hexdigest()
hashed = {line:encHash}
fwrite = open('Password.txt', 'a')
hashed = str(hashed)
data = open("Password.txt").read()
if hashed in data:
print hashed
else:
fwrite.write(hashed)
fwrite.write("\n")
fwrite.close
print hashed
答案 0 :(得分:0)
我不知道Python,但听起来它可能与你打开文件的方式有关。
尝试使用open(fileName,'rb')而不是open(fileName,'r')。
此链接描述\ r \ n \ n差异。以二进制文件打开文件会将换行符转换为运行代码的系统的换行符。