【发布时间】:2018-02-01 11:04:38
【问题描述】:
我的算法有问题,显然它在执行时跳过了很多 sha1 hashes。
文件名没有问题,但我有这个输出的问题:
filename+sha1\n
对于他们每个人。我可以猜到这是因为 os.walk 在某种程度上,但我不是那个专业的 ATM。
txt = open('list','w')
for dirpath, dirnames, filenames in os.walk(dir_path):
text = str(filenames)
for tag in ("[", "]", " ","'"):
text = text.replace(tag, '')
text = str(text.replace(',','\n'))
for i in filenames:
m = hashlib.sha1(str(text).encode('utf-8')).hexdigest()
txt.write(text+" "+str(m)+"\n")
txt = txt.close()
谢谢
【问题讨论】:
-
你能提供一些输出吗?有什么问题?
-
找到有效的答案后,请单击该答案旁边的勾号接受。这可以让其他有您问题的人知道哪种解决方案适合您。
-
可能无法解决您的问题,但您的第二个
for循环下方似乎有多余的替换。您可以使用import retext = re.sub('[\[\]," "]',"",text)删除for tag以及其正下方的行。 -
一点输出:
mouse.cfg mscoree.dll MSS32.DLL msvcp60.dll MSVCRTD.DLL patchw32.dll python22.dll python27.dll SpeedTreeRT.dll start.bat syserr.txtunicows.dll 613e84599f579b43777a1397ceff608a194498faartpclnt.dll bdvid32.dll channel.inf如您所见,只有其中一个给了我正确的输出。感谢 Solaxun 的提示! -
以上不是特别有用。如果您可以发布一个被跳过的示例文件名,那可能会更有帮助。