2012-05-07 14 views
5

मुझे एक फ़ोल्डर को ज़िप करने की आवश्यकता है जिसमें एक .xml फ़ाइल और एक .fgdb फ़ाइल शामिल है जो अजगर का उपयोग कर है। क्या कोई मेरी मदद कर सकता है? मैंने इंटरनेट पर मिली कुछ स्क्रिप्ट्स की कोशिश की लेकिन हमेशा कुछ तकनीकी समस्याएं होती हैं (जैसे एक खाली ज़िप फ़ाइल बनाना, या ज़िप फ़ाइल बनाना, मैं 'अनुमति नहीं' खोल सकता हूं ..)पायथन में सबफ़ोल्डर के साथ ज़िप फ़ोल्डर

अग्रिम धन्यवाद।

उत्तर

6

इसे काम करने की कुंजी os.walk() फ़ंक्शन है। यहां एक स्क्रिप्ट है जिसे मैंने अतीत में इकट्ठा किया था जो काम करना चाहिए। अगर आपको कोई अपवाद मिलता है तो मुझे बताएं।

import zipfile 
import os 
import sys 

def zipfolder(foldername, target_dir):    
    zipobj = zipfile.ZipFile(foldername + '.zip', 'w', zipfile.ZIP_DEFLATED) 
    rootlen = len(target_dir) + 1 
    for base, dirs, files in os.walk(target_dir): 
     for file in files: 
      fn = os.path.join(base, file) 
      zipobj.write(fn, fn[rootlen:]) 

zipfolder('thenameofthezipfile', 'thedirectorytobezipped') #insert your variables here 
sys.exit() 
+0

ठीक है। मुझे पहले कुछ मदद करो। उस मामले में target_dir क्या है और फ़ोल्डर नाम क्या है? बस मुझे उदाहरण दें, कृपया सुनिश्चित करने के लिए। क्योंकि मैंने आपके कोड की कोशिश की, यह अपवाद के बिना चलता है लेकिन ज़िप बनाने के बिना भी ?! – Z77

+0

हाय Z77, मैंने कोड को आपकी समस्या के लिए अधिक विशिष्ट बनाने के लिए संपादित किया है, कृपया नई स्क्रिप्ट देखें। फ़ोल्डर नाम वह फ़ोल्डर नाम है जिसे आप नई .zip फ़ाइल को देना चाहते हैं और target_dir वह लक्ष्य फ़ोल्डर है जिसे आप ज़िप करना चाहते हैं। बस उस फ़ोल्डर के उस फ़ोल्डर में स्क्रिप्ट डालें जिसे आप ज़िप करना चाहते हैं, फ़ंक्शन कॉल में चर बदलें और यह काम करेगा। –

+0

आपके प्रयासों के लिए टीएनएक्स, लेकिन अभी भी कुछ नहीं, कोई बनाई गई ज़िप फ़ाइल नहीं है?! :( – Z77

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