kann mir bitte jemand auf die Sprünge helfen?
Ich komme nicht weiter und dreh mich nur noch im Kreis mit der Problematik.
Folgendes Programm:
myfindduplicates.py
Code: Alles auswählen
#!/usr/bin/python
from __future__ import with_statement
import os
import md5
import sys
def fsize(file):
return os.stat(file)[6]
def fmd5sum(file):
return md5.new(file.read()).digest()
def mkprimkey(file):
output = set()
output.add(fsize(file))
output.add(fmd5sum(file))
return output
def addentry(dict, pkey, fname):
if dict.has_key(pkey):
dict[pkey].add(fname)
else:
valset = set()
dict[pkey] = valset.add(fname)
### main programm ###
mydict = dict()
for fname in sys.stdin:
fname = fname.split('\n')[0]
with open(fname) as file:
pkey = mkprimkey(file)
addentry(mydict, pkey, fname)
print mydict
# find . -maxdepth 1 -type f -name "*.py" -printf "%f\n" | ./myfindduplicates.py
Es kommt zu folgender Fehlermeldung, mit der ich nichts anfangen kann:
Code: Alles auswählen
Traceback (most recent call last):
File "./fsizemd5sum.py", line 40, in <module>
pkey = mkprimkey(file)
File "./fsizemd5sum.py", line 22, in mkprimkey
output.add(fsize(file))
File "./fsizemd5sum.py", line 15, in fsize
return os.stat(file)[6]
TypeError: coercing to Unicode: need string or buffer, file found