2013-09-26 2 views
5

मैंने हाल ही में एक दोस्त की मृत हार्ड ड्राइव से एक टन चित्रों को पुनर्प्राप्त किया और मैंने पाइथन में एक प्रोग्राम लिखना चाहता था करने के लिए:पायथन 3. फ़ाइल को लिखने की आवश्यकता है, यह देखने के लिए जांचें कि कोई लाइन मौजूद है या नहीं, फिर फ़ाइल को फिर से लिखें

चेक सभी फाइलों

के माध्यम से जाओ जांच उनके md5sum अगर md5sum एक पाठ फ़ाइल

में मौजूद है देखने के लिए अगर यह होता है, मुझे पता है डुप्लीकेट के साथ "पाया गया है "

यदि ऐसा नहीं होता है, तो MD5Sum को टेक्स्ट फ़ाइल में जोड़ें।

सभी डुप्लिकेट को हटाने का अंतिम लक्ष्य है। हालांकि, जब मैं इस कोड चलाने के लिए, मैं निम्नलिखित:

Traceback (most recent call last): 
    File "C:\Users\godofgrunts\Documents\hasher.py", line 16, in <module> 
    for line in myfile: 
io.UnsupportedOperation: not readable 

मैं यह पूरी तरह से गलत कर रहा हूँ या मैं बस कुछ गलत समझ रहा हूँ?

import hashlib 
import os 
import re 

rootDir = 'H:\\recovered' 
hasher = hashlib.md5() 


with open('md5sums.txt', 'w') as myfile: 
     for dirName, subdirList, fileList in os.walk(rootDir):    
       for fname in fileList: 
         with open((os.path.join(dirName, fname)), 'rb') as pic: 
           buf = pic.read() 
           hasher.update(buf) 
         md5 = str(hasher.hexdigest()) 
         for line in myfile: 
           if re.search("\b{0}\b".format(md5),line): 
             print("DUPLICATE HAS BEEN FOUND") 
           else: 
             myfile.write(md5 +'\n') 
+0

अपने खरोज के बारे में, चार रिक्त स्थान 8. के ​​लिए बेहतर बहुत आसान हम सब के साथ-साथ पढ़ने के लिए होगा है। [पीईपी 8] देखें (http://www.python.org/dev/peps/pep-0008/#indentation)। – RyPeck

उत्तर

3

आप लेखन मोड ('w') में अपनी फ़ाइल को खोला है with बयान में। इसे लिखने और पढ़ने के दोनों मोड को खोलने के लिए, करें:

with open('md5sums.txt', 'w+') as myfile: 
+0

तो मैंने कोशिश की और यह अभी भी नहीं लिखता है। मैंने अपने कोड में कुछ प्रिंट स्टेटमेंट जोड़े और यह उस भाग से नीचे चला गया जहां मैं md5 = str (हैशर.हेक्सडिजिस्ट()) घोषित करता हूं और फिर लूप के लिए os.walk शुरू करता हूं। – godofgrunts

+0

@godofgrunts डबल अपने इंडेंटेशन की जांच करें। यह उन चीजों को कर सकता है जो आप नहीं करना चाहते हैं – TerryA

+0

मैं यह नहीं कहूंगा कि मुझे 100% यकीन है कि मेरा इंडेंटेशन सही है, लेकिन मुझे पूरा यकीन है कि यह है। – godofgrunts

संबंधित मुद्दे

 संबंधित मुद्दे