我是Python新手,正在编写一个脚本,它接收一个目录名参数,并递归返回所述目录中所有文件的列表及其MD5HASH
该脚本利用多处理来提高效率
我希望输出像这样:“FileCounter,FileName,MD5HASH…”
唯一一个似乎不起作用的部分是计数器——尽管我在这里使用了一些帖子建议的值锁,但顺序仍然会不时被打乱(即1,2,3,6,4,6而不是1,2,3,4,5,6)
这是我的密码:
#!/usr/bin/python
from multiprocessing import Pool,Value
import sys
import os
import hashlib
from time import sleep
counter = Value('i',0)
def md5gen (filePath):
global counter
with counter.get_lock():
counter.value += 1
print str(counter.value)+","+filePath+","+hashlib.md5(filePath).hexdigest()
# Check argument
if len(sys.argv) < 2:
print "No folder specified!"
quit()
folderName = sys.argv[1]
if not os.path.exists(folderName):
print "Not a valid folder!"
quit()
fileNames = []
for subdir,dirs,files in os.walk(folderName):
for file in files:
filePath = subdir + os.sep + file
fileNames.append(filePath)
p = Pool()
p.map(md5gen,fileNames)
我很想知道我做错了什么。 谢谢大家!
目前没有回答
相关问题 更多 >
编程相关推荐