2014-08-28 10 views
10

में फ़ाइलों की सूची जोड़ने के लिए पायथन का उपयोग करना मैं सभी '.py' फ़ाइलों को ज़िप फ़ाइल में जोड़ने के लिए एक स्क्रिप्ट लिखना चाहता हूं।एक ज़िप फ़ाइल

यहाँ मैं क्या है:

Traceback (most recent call last): 
    File "C:\Python27\working.py", line 19, in <module> 
    ZipFile.write(str(a), zipfile.ZIP_DEFLATED) 
    File "C:\Python27\lib\zipfile.py", line 1121, in write 
    arcname = os.path.normpath(os.path.splitdrive(arcname)[1]) 
    File "C:\Python27\lib\ntpath.py", line 125, in splitdrive 
    if p[1:2] == ':': 
TypeError: 'int' object has no attribute '__getitem__' 

तो लगता दिया फ़ाइल नाम सही नहीं है:

import zipfile 
import os 

working_folder = 'C:\\Python27\\' 

files = os.listdir(working_folder) 

files_py = [] 

for f in files: 
    if f[-2:] == 'py': 
     fff = working_folder + f 
     files_py.append(fff) 

ZipFile = zipfile.ZipFile("zip testing.zip", "w") 

for a in files_py: 
    ZipFile.write(a, zipfile.ZIP_DEFLATED) 

हालांकि यह एक त्रुटि देता है।

+0

क्या लाइन? पूरा निशान दिखाएं – WeaselFox

+0

आह, श्री पीटर, आप कैसे हैं? यह वास्तविक नाम है। मैंने इसे 'test.zip' में बदलने की कोशिश की, न तो काम कर रहा था। –

+0

@ मार्कक: हाँ, मैंने पहले ही छूट दी है कि इस बीच, क्षमा करने के बिना क्षमा करने के लिए खेद है कि स्रोत में 'arcname' क्या है। मैं पहले से ही समस्या का पता लगाया, मेरा जवाब देखें। –

उत्तर

12

आप कीवर्ड तर्क के रूप में संपीड़न प्रकार में पारित करने के लिए की जरूरत है:

ZipFile.write(a, compress_type=zipfile.ZIP_DEFLATED) 

कीवर्ड तर्क, आप ZipFile.write() दे रहे हैं एक पूर्णांक arcname तर्क के बजाय बिना, और उस त्रुटि आप arcname के रूप में देखते खड़ी कर रहा है सामान्यीकृत किया जा रहा है।

5

मार्गदर्शन ऊपर के अनुसार, अंतिम है: (बस उन्हें एक साथ डाल मामले में यह उपयोगी हो सकता है)

import zipfile 
import os 

working_folder = 'C:\\Python27\\' 

files = os.listdir(working_folder) 

files_py = [] 

for f in files: 
    if f.endswith('py'): 
     fff = os.path.join(working_folder, f) 
     files_py.append(fff) 

ZipFile = zipfile.ZipFile("zip testing3.zip", "w") 

for a in files_py: 
    ZipFile.write(os.path.basename(a), compress_type=zipfile.ZIP_DEFLATED) 
संबंधित मुद्दे