2008-08-20 4 views
29

मैं अजगर 2.5 में zipfile के साथ एक ज़िप फ़ाइल बनाने रहा हूँ में एक एन्क्रिप्टेड ज़िप फ़ाइल बनाएँ, यह ठीक अब तक काम करता है:अजगर

import zipfile, os 

locfile = "test.txt" 
loczip = os.path.splitext (locfile)[0] + ".zip" 
zip = zipfile.ZipFile (loczip, "w") 
zip.write (locfile) 
zip.close() 

लेकिन मैं ज़िप फ़ाइल में फ़ाइलों को एन्क्रिप्ट करने के लिए कैसे नहीं पा सके । मैं सिस्टम का उपयोग कर सकता हूं और पीकेजेआईपी-एस को कॉल कर सकता हूं, लेकिन मुझे लगता है कि वहां एक और "पायथनिक" तरीका होना चाहिए। मैं एक ओपन सोर्स समाधान की तलाश में हूं।

+2

ओपन-सोर्स समाधान http://stackoverflow.com/questions/2195747/python-code-to-create-a-password-encrypted-zip-file/2366917#2366917 – jfs

उत्तर

0

आप Chilkat लाइब्रेरी का उपयोग कर सकते हैं। यह वाणिज्यिक है, लेकिन इसका नि: शुल्क मूल्यांकन है और बहुत अच्छा लगता है।

यहाँ एक उदाहरण मैं here से मिल गया है:

import chilkat 

# Demonstrates how to create a WinZip-compatible 128-bit AES strong encrypted zip 
zip = chilkat.CkZip() 
zip.UnlockComponent("anything for 30-day trial") 

zip.NewZip("strongEncrypted.zip") 

# Set the Encryption property = 4, which indicates WinZip compatible AES encryption. 
zip.put_Encryption(4) 
# The key length can be 128, 192, or 256. 
zip.put_EncryptKeyLength(128) 
zip.SetPassword("secret") 

zip.AppendFiles("exampleData/*",True) 
zip.WriteZip() 
+0

मैंने पहले ही चिलकट उदाहरण देखे हैं, लेकिन मैं मैं एक ओपन सोर्स विकल्प की तलाश में हूं (माफ करना मैंने अपनी मूल पोस्ट में इसका जिक्र नहीं किया है) मैं Google में देख रहा हूं, लेकिन बिना किस्मत के। – PabloG

13

मैं एक साधारण पुस्तकालय बनाया अजगर में एक पासवर्ड एन्क्रिप्टेड ज़िप फ़ाइल बनाने में। - here

import pyminizip 

compression_level = 5 # 1-9 
pyminizip.compress("src.txt", "dst.zip", "password", compression_level) 

पुस्तकालय zlib की आवश्यकता है।

मैंने जांच की है कि फ़ाइल को विन्डोज/मैक में निकाला जा सकता है।

+2

यह पाइप इंस्टॉल के माध्यम से उपलब्ध है pyminizip – shadowbq

+1

निम्न के साथ काम नहीं करता है: एनाकोंडा (जुपीटर नोटबुक) के माध्यम से पायथन 3.5: एक सुरक्षित ज़िप फ़ाइल का उत्पादन किया गया लेकिन पासवर्ड बनाने के लिए मैंने जो पासवर्ड बनाया था वह फ़ोल्डर नहीं खोलता है! एक पिल्ला का बेटा! –

3

डुप्लिकेट प्रश्न https://stackoverflow.com/a/2366917/874188zip के बजाय 7z का उपयोग करने की अनुशंसा करता है। मेरा अनुभव यह भालू है।

एन्क्रिप्टेड ज़िप संग्रह ('myarchive.zip' नाम) बनाने के लिए उपयोग कर रहा खुला स्रोत 7-Zip उपयोगिता:

rc = subprocess.call(['7z', 'a', '-pP4$$W0rd', '-y', 'myarchive.zip'] + 
        ['first_file.txt', 'second.file']) 

7-पिन स्थापित करने के लिए

कॉपी/@JFSebastian द्वारा जवाब यहाँ भी पूर्णता के लिए चिपकाने प्रकार:

$ sudo apt-get install p7zip-full 

हाथ से अनज़िप करने के लिए (ज़िप UTITITY के साथ संगतता प्रदर्शित करने के लिए), टाइप करें:

$ unzip myarchive.zip 

और प्रॉम्प्ट पर P4$$W0rd दर्ज करें।

या अजगर 2.6+ में एक ही:

>>> zipfile.ZipFile('myarchive.zip').extractall(pwd='P4$$W0rd') 
-1

@ tripleee के जवाब में मदद मिली मुझे, अपने परीक्षण नीचे देखें।

यह कोड विंडोज 8.1 (7z सिस्टम में जोड़ा गया पथ पर पाइथन 3.5.2 पर मेरे लिए काम करता है)।

rc = subprocess.call(['7z', 'a', output_filename + '.zip', '-mx9', '-pSecret^)'] + [src_folder + '/']) 
दो पैरामीटर के साथ

:

  1. -mx9 का मतलब है अधिकतम संपीड़न
  2. -pSecret^) मतलब है पासवर्ड Secret^) है। ^ विंडोज ओएस के लिए ) के लिए बच निकला है, लेकिन जब आप अनजिप करते हैं, तो उसे ^ में टाइप करने की आवश्यकता होगी।जब 7z.exe ज़िप फ़ाइल बनाने

^ विंडोज ओएस के बिना पासवर्ड लागू नहीं होगा।

इसके अलावा, आप -mhe स्विच का उपयोग करना चाहते हैं, आप फ़ाइल स्वरूप की जरूरत 7z बजायज़िप में होना होगा।

मुझे आशा है कि इससे मदद मिल सकती है।