我的算法存在问题,显然它在执行时会跳过很多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()
由于
答案 0 :(得分:0)
变化:
txt = open('list','w')
为:
txt = open('list','a')
你正在使用" w"它会覆盖以前的任何内容。您需要" a",它会附加到现有文件而不会覆盖。
答案 1 :(得分:0)
看起来像潜在问题的是您将当前文件夹中每个文件的列表转换为字符串然后在该列表上执行替换。我假设你打算做的是在每个文件名 string 中替换那些特殊的filenames
。试试下面的内容。
tags
根据要求,如果你没有'想要使用 txt = open('list','w')
for dirpath, dirnames, filenames in os.walk(dir_path):
for text in filenames:
text = re.sub('[\[\]," "]',"",text)
m = hashlib.sha1(str(text).encode('utf-8')).hexdigest()
txt.write(text+" "+str(m)+"\n")
txt = txt.close()
,只需按照原来的方式进行操作:
re