Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में ZIPFILE मॉड्यूल से फाइलों को कैसे कंप्रेस करें

समस्या

आप पायथन में कंप्रेस्ड फाइलें बनाना चाहते हैं।

परिचय

ZIP फाइलें कई अन्य फाइलों की कंप्रेस्ड सामग्री को रख सकती हैं। एक फाइल को कंप्रेस करने से डिस्क पर उसका आकार कम हो जाता है, जो इंटरनेट पर ट्रांसफर करते समय या Control-M AFT, कनेक्ट डायरेक्ट, या यहां तक कि scp का उपयोग करके सिस्टम्स के बीच ट्रांसफर करते समय उपयोगी होता है।

पायथन प्रोग्राम zipfile मॉड्यूल में फंक्शन्स का उपयोग करके ZIP फाइलें बनाते हैं।

कैसे करें

1. हम zipfile और io पैकेज का उपयोग करेंगे। अगर आपके सिस्टम पर कोई पैकेज गायब है तो उन्हें pip से इंस्टॉल करें।

2. सैंपल डेटा को फाइल में लिखने के लिए एक फंक्शन लिखें


import io

def write_data_to_files(inp_data, file_name):
    """function: create a csv file with the data passed to this code
    args: inp_data: data to be written to the target file
          file_name: target file name to store the data
    return: none"""
    print(f" *** Writing the data to - {file_name}")
    throwaway_storage = io.StringIO(inp_data)
    with open(file_name, 'w') as f:
        for line in throwaway_storage:
            f.write(line)

3. ऊपर बनाई गई फाइलों को ज़िप करने के लिए file_compress फंक्शन लिखें

यह फंक्शन फाइलों की सूची स्वीकार करता है, उनके माध्यम से जाता है और उन्हें एक ज़िप फाइल में कंप्रेस करता है।

अपनी खुद की कंप्रेस्ड ZIP फाइलें बनाने के लिए, आपको ZipFile ऑब्जेक्ट को राइट मोड में खोलना होगा, दूसरे आर्गुमेंट के रूप में 'w' पास करके।

जब आप ZipFile ऑब्जेक्ट के write() मेथड में पाथ पास करते हैं, तो पायथन उस पाथ पर फाइल को कंप्रेस करेगा और ZIP फाइल में जोड़ देगा।

write() मेथड का पहला आर्गुमेंट जोड़ने के लिए फाइलनाम की स्ट्रिंग है।

दूसरा आर्गुमेंट कंप्रेशन टाइप पैरामीटर है - जो कंप्यूटर को बताता है कि फाइलों को कंप्रेस करने के लिए किस एल्गोरिदम का उपयोग करना चाहिए।


import zipfile

def file_compress(inp_file_names, out_zip_file):
    """function: file_compress
    args: inp_file_names: list of filenames to be zipped
          out_zip_file: output zip file
    return: none"""
    compression = zipfile.ZIP_DEFLATED
    print(f" *** Input File name passed for zipping - {inp_file_names}")
    print(f' *** out_zip_file is - {out_zip_file}')
    
    zf = zipfile.ZipFile(out_zip_file, mode="w")
    try:
        for file_to_write in inp_file_names:
            print(f' *** Processing file {file_to_write}')
            zf.write(file_to_write, file_to_write, compress_type=compression)
    except FileNotFoundError as e:
        print(f' *** Exception occurred during zip process - {e}')
    finally:
        zf.close()

4. दो CSV फाइलें बनाने और फिर उन्हें ज़िप करने के लिए फंक्शन्स कॉल करें

हम 1 से अधिक ग्रैंड स्लैम खिताब जीतने वाले टेनिस खिलाड़ियों के डेटा का उपयोग एक फाइल - temporary_file1_for_zip.csv के लिए करेंगे और 1 या उससे कम ग्रैंड स्लैम जीतने वाले खिलाड़ियों के लिए दूसरी फाइल temporary_file2_for_zip.csv। फिर हम दोनों फाइलों को temporary.zip फाइल में ज़िप करेंगे।


file_name1 = "temporary_file1_for_zip.csv"
file_name2 = "temporary_file2_for_zip.csv"
file_name_list = [file_name1, file_name2]
zip_file_name = "temporary.zip"

file_data_1 = """player,titles
Federer,20
Nadal,20
Djokovic,17
Murray,3"""

file_data_2 = """player,titles
Theim,1
Zverev,0
Medvedev,0
Rublev,0"""

write_data_to_files(file_data_1, file_name1)
write_data_to_files(file_data_2, file_name2)
file_compress(file_name_list, zip_file_name)

5. पूरा कोड एक साथ


import zipfile
import io
import pandas as pd

def write_data_to_files(inp_data, file_name):
    print(f" *** Writing the data to - {file_name}")
    throwaway_storage = io.StringIO(inp_data)
    with open(file_name, 'w') as f:
        for line in throwaway_storage:
            f.write(line)

def file_compress(inp_file_names, out_zip_file):
    compression = zipfile.ZIP_DEFLATED
    print(f" *** Input File name passed for zipping - {inp_file_names}")
    print(f' *** out_zip_file is - {out_zip_file}')
    zf = zipfile.ZipFile(out_zip_file, mode="w")
    try:
        for file_to_write in inp_file_names:
            print(f' *** Processing file {file_to_write}')
            zf.write(file_to_write, file_to_write, compress_type=compression)
    except FileNotFoundError as e:
        print(f' *** Exception occurred during zip process - {e}')
    finally:
        zf.close()

if __name__ == '__main__':
    file_name1 = "temporary_file1_for_zip.csv"
    file_name2 = "temporary_file2_for_zip.csv"
    file_name_list = [file_name1, file_name2]
    zip_file_name = "temporary.zip"
    
    file_data_1 = """player,titles
Federer,20
Nadal,20
Djokovic,17
Murray,3"""
    
    file_data_2 = """player,titles
Theim,1
Zverev,0
Medvedev,0
Rublev,0"""
    
    write_data_to_files(file_data_1, file_name1)
    write_data_to_files(file_data_2, file_name2)
    file_compress(file_name_list, zip_file_name)

आउटपुट:

  • temporary_file1_for_zip.csv वर्तमान डायरेक्टरी में बनाया गया।
  • temporary_file2_for_zip.csv वर्तमान डायरेक्टरी में बनाया गया।
  • temporary.zip फाइल वर्तमान डायरेक्टरी में बनाई गई।
  1. मैक पर फाइलों को ज़िप कैसे करें मैक पर फाइलों को ज़िप कैसे करें

    किसी ने कहा था कि आप कभी बहुत अमीर या बहुत पतले नहीं हो सकते; आप इसमें यह भी जोड़ सकते हैं कि आपके पास कभी बहुत अधिक स्टोरेज स्पेस नहीं हो सकता। अपने मैक पर स्पेस बचाने का एक तरीका है फाइलों और फोल्डरों को कंप्रेस (या ज़िप) करना ताकि वे कम जगह घेरें, और यह तब भी अच्छा विचार है जब आप उन्हें किसी और क

  1. लिनक्स में Zip फ़ाइलें कैसे निकालें लिनक्स में Zip फ़ाइलें कैसे निकालें

    जब डाउनलोड गति धीमी थी और हर सेव किया गया बाइट मायने रखता था, तब की तुलना में Zip फ़ाइलें अब उतनी आम नहीं हैं। फिर भी, यह एक काफी सामान्य फ़ाइल प्रकार है। जल्दी या बाद में आपको शायद एक को खोलना पड़ेगा। आप जिस डिस्ट्रीब्यूशन का उपयोग करते हैं, उसके आधार पर, zip आर्काइव निकालना शायद काफी आसान है। फिर

  1. macOS पर फाइलों को ज़िप  कंप्रेस  और अनज़िप  अनकंप्रेस  कैसे करें macOS पर फाइलों को ज़िप 'कंप्रेस' और अनज़िप 'अनकंप्रेस' कैसे करें

    एक ज़िप फाइल एक या अधिक फाइलों या फोल्डरों का संग्रह है जो एक ही फाइल में कंप्रेस्ड होते हैं। यह कंप्यूटर पर स्टोरेज स्पेस बचाता है और सभी फाइलों को व्यवस्थित रखता है। एक कंप्रेस्ड फाइल को फ्लैश ड्राइव या ईमेल के माध्यम से स्थानांतरित करना बहुत आसान होता है। सर्वर पर अधिकांश सॉफ़्टवेयर डाउनलोड सर्वर