ਪਾਈਥਨ ਸਟੈਂਡਰਡ ਲਾਇਬ੍ਰੇਰੀ ਦਾ ਜ਼ਿਪਫਾਈਲ ਮੋਡੀਊਲ ਫਾਈਲਾਂ ਨੂੰ ਜ਼ਿਪ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰਨ ਅਤੇ ਜ਼ਿਪ ਫਾਈਲਾਂ ਨੂੰ ਅਣਕੰਪਰੈੱਸ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ ਮਿਆਰੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਸ਼ਾਮਲ ਹੈ, ਇਸਲਈ ਕੋਈ ਵਾਧੂ ਇੰਸਟਾਲੇਸ਼ਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
ਹੇਠ ਲਿਖੀਆਂ ਸਮੱਗਰੀਆਂ ਦੀ ਵਿਆਖਿਆ ਕੀਤੀ ਗਈ ਹੈ।
- ਕਈ ਫਾਈਲਾਂ ਨੂੰ ਇੱਕ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰੋ
- ਇੱਕ ਮੌਜੂਦਾ ZIP ਫਾਈਲ ਵਿੱਚ ਇੱਕ ਨਵੀਂ ਫਾਈਲ ਸ਼ਾਮਲ ਕਰੋ
- ਇੱਕ ਡਾਇਰੈਕਟਰੀ (ਫੋਲਡਰ) ਨੂੰ ਇੱਕ ZIP ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰੋ
- ਇੱਕ ਪਾਸਵਰਡ ਨਾਲ ਇੱਕ ZIP ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕੀਤਾ ਗਿਆ
- ZIP ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ।
- ZIP ਫਾਈਲ ਦੀ ਸਮੁੱਚੀ ਸਮੱਗਰੀ ਨੂੰ ਐਕਸਟਰੈਕਟ (ਅਨਪੈਕ) ਕਰੋ।
- ZIP ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਚੁਣੋ ਅਤੇ ਇਸਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰੋ।
- ਕਈ ਫਾਈਲਾਂ ਨੂੰ ਇੱਕ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰੋ
- ਇੱਕ ਮੌਜੂਦਾ ZIP ਫਾਈਲ ਵਿੱਚ ਇੱਕ ਨਵੀਂ ਫਾਈਲ ਸ਼ਾਮਲ ਕਰੋ
- ਇੱਕ ਡਾਇਰੈਕਟਰੀ (ਫੋਲਡਰ) ਨੂੰ ਇੱਕ ZIP ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰੋ
- ਇੱਕ ਪਾਸਵਰਡ ਨਾਲ ਇੱਕ ZIP ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕੀਤਾ ਗਿਆ
- ZIP ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ।
- ZIP ਫਾਈਲ ਦੀ ਸਮੁੱਚੀ ਸਮੱਗਰੀ ਨੂੰ ਐਕਸਟਰੈਕਟ (ਅਨਪੈਕ) ਕਰੋ।
- ZIP ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਚੁਣੋ ਅਤੇ ਇਸਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰੋ।
ਕਈ ਫਾਈਲਾਂ ਨੂੰ ਇੱਕ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰੋ
ਇੱਕ ਜ਼ਿਪਫਾਈਲ ਆਬਜੈਕਟ ਬਣਾਓ ਅਤੇ ਉਹਨਾਂ ਫਾਈਲਾਂ ਨੂੰ ਜੋੜਨ ਲਈ ਰਾਈਟ() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰੋ ਜੋ ਤੁਸੀਂ ਸੰਕੁਚਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ।
ਇੱਕ ਨਵੀਂ ZIP ਫਾਈਲ ਬਣਾਉਣ ਲਈ, ZipFile ਆਬਜੈਕਟ ਦੇ ਕੰਸਟਰਕਟਰ ਦੇ ਪਹਿਲੇ ਆਰਗੂਮੈਂਟ ਦੇ ਤੌਰ ਤੇ ਬਣਾਈ ਜਾਣ ਵਾਲੀ ਜ਼ਿਪ ਫਾਈਲ ਦਾ ਮਾਰਗ ਨਿਰਧਾਰਤ ਕਰੋ, ਅਤੇ ਦੂਜੀ ਆਰਗੂਮੈਂਟ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰw'
ਇਸ ਤੋਂ ਇਲਾਵਾ, ਕੰਪਰੈਸ਼ਨ ਵਿਧੀ ਨੂੰ ਤੀਜੀ ਦਲੀਲ ਵਜੋਂ ਨਿਰਧਾਰਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
zipfile.ZIP_STORED
:ਬਿਨਾਂ ਕੰਪਰੈਸ਼ਨ ਦੇ ਕਈ ਫਾਈਲਾਂ ਨੂੰ ਜੋੜੋ (ਡਿਫੌਲਟ)zipfile.ZIP_DEFLATED
:ਸਧਾਰਨ ਜ਼ਿਪ ਕੰਪਰੈਸ਼ਨ (ਜ਼ਲਿਬ ਮੋਡੀਊਲ ਲੋੜੀਂਦਾ)zipfile.ZIP_BZIP2
:BZIP2 ਕੰਪਰੈਸ਼ਨ (bz2 ਮੋਡੀਊਲ ਲੋੜੀਂਦਾ)zipfile.ZIP_LZMA
:LZMA ਕੰਪਰੈਸ਼ਨ (lzma ਮੋਡੀਊਲ ਲੋੜੀਂਦਾ)
BZIP2 ਅਤੇ LZMA ਵਿੱਚ ਉੱਚ ਸੰਕੁਚਨ ਅਨੁਪਾਤ ਹੈ (ਛੋਟੇ ਆਕਾਰ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ), ਪਰ ਕੰਪਰੈਸ਼ਨ ਲਈ ਲੋੜੀਂਦਾ ਸਮਾਂ ਲੰਬਾ ਹੈ।
ਰਾਈਟ() ਵਿਧੀ ਵਿੱਚ, ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ ਫਾਈਲ ਨਾਮ ਵਾਲੀ ਫਾਈਲ ਨੂੰ ਦੂਜੀ ਆਰਗੂਮੈਂਟ ਆਰਕਨੇਮ ਨਾਲ ਇੱਕ ZIP ਫਾਈਲ ਵਿੱਚ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਆਰਕਨਾਮ ਨੂੰ ਛੱਡ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤਾਂ ਫਾਈਲ ਨਾਮ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਵਰਤਿਆ ਜਾਵੇਗਾ। arcname ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਬਣਤਰ ਨੂੰ ਵੀ ਨਿਰਧਾਰਤ ਕਰ ਸਕਦਾ ਹੈ।
ZipFile ਆਬਜੈਕਟ ਨੂੰ close() ਵਿਧੀ ਨਾਲ ਬੰਦ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਪਰ ਜੇਕਰ ਤੁਸੀਂ ਸਟੇਟਮੈਂਟ ਦੇ ਨਾਲ ਵਰਤਦੇ ਹੋ, ਤਾਂ ਇਹ ਆਪਣੇ ਆਪ ਬੰਦ ਹੋ ਜਾਵੇਗਾ ਜਦੋਂ ਬਲਾਕ ਪੂਰਾ ਹੋ ਜਾਵੇਗਾ।
import zipfile
with zipfile.ZipFile('data/temp/new_comp.zip', 'w', compression=zipfile.ZIP_DEFLATED) as new_zip:
new_zip.write('data/temp/test1.txt', arcname='test1.txt')
new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')
ਰਾਈਟ() ਵਿਧੀ ਦੇ ਕੰਪ੍ਰੈਸ_ਟਾਈਪ ਆਰਗੂਮੈਂਟ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਕੇ, ਹਰੇਕ ਫਾਈਲ ਲਈ ਕੰਪਰੈਸ਼ਨ ਵਿਧੀ ਦੀ ਚੋਣ ਕਰਨਾ ਵੀ ਸੰਭਵ ਹੈ।
with zipfile.ZipFile('data/temp/new_comp_single.zip', 'w') as new_zip:
new_zip.write('data/temp/test1.txt', arcname='test1.txt', compress_type=zipfile.ZIP_DEFLATED)
new_zip.write('data/temp/test2.txt', arcname='zipdir/test2.txt')
new_zip.write('data/temp/test3.txt', arcname='zipdir/sub_dir/test3.txt')
ਇੱਕ ਮੌਜੂਦਾ ZIP ਫਾਈਲ ਵਿੱਚ ਇੱਕ ਨਵੀਂ ਫਾਈਲ ਸ਼ਾਮਲ ਕਰੋ
ਇੱਕ ਮੌਜੂਦਾ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਇੱਕ ਨਵੀਂ ਫਾਈਲ ਜੋੜਨ ਲਈ, ਜ਼ਿਪ ਫਾਈਲ ਆਬਜੈਕਟ ਬਣਾਉਣ ਵੇਲੇ ਕੰਸਟਰਕਟਰ ਦੀ ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ ਨੂੰ ਮੌਜੂਦਾ ਜ਼ਿਪ ਫਾਈਲ ਦੇ ਮਾਰਗ ਤੇ ਸੈੱਟ ਕਰੋ। ਨਾਲ ਹੀ, ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਦੂਜਾ ਆਰਗੂਮੈਂਟ ਮੋਡ ਸੈਟ ਕਰੋ।a'
ਫਿਰ, ਜਿਵੇਂ ਕਿ ਉਪਰੋਕਤ ਉਦਾਹਰਨ ਵਿੱਚ, ਸਿਰਫ਼ write() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫਾਈਲ ਨੂੰ ਜੋੜੋ।
with zipfile.ZipFile('data/temp/new_comp.zip', 'a') as existing_zip:
existing_zip.write('data/temp/test4.txt', arcname='test4.txt')
ਇੱਕ ਡਾਇਰੈਕਟਰੀ (ਫੋਲਡਰ) ਨੂੰ ਇੱਕ ZIP ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰੋ
ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ ਪੂਰੀ ਡਾਇਰੈਕਟਰੀ (ਫੋਲਡਰ) ਨੂੰ ਇੱਕ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਫਾਈਲਾਂ ਦੀ ਸੂਚੀ ਬਣਾਉਣ ਲਈ os.scandir() ਜਾਂ os.listdir() ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ shutil ਵਿੱਚ make_archive() ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਆਸਾਨ ਹੈ। ਮੋਡੀਊਲ.
ਅਗਲਾ ਲੇਖ ਦੇਖੋ।
ਇੱਕ ਪਾਸਵਰਡ ਨਾਲ ਇੱਕ ZIP ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕੀਤਾ ਗਿਆ
ਜ਼ਿਪਫਾਈਲ ਮੋਡੀਊਲ ਤੁਹਾਨੂੰ ਪਾਸਵਰਡ-ਸੁਰੱਖਿਅਤ ਜ਼ਿਪ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਕਿਸੇ ਫਾਈਲ ਨੂੰ ਪਾਸਵਰਡ ਨਾਲ ਸੁਰੱਖਿਅਤ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਥਰਡ ਪਾਰਟੀ ਲਾਇਬ੍ਰੇਰੀ ਪਾਈਮਿਨੀਜ਼ਿਪ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਨੋਟ ਕਰੋ ਕਿ ਪਾਸਵਰਡ-ਸੁਰੱਖਿਅਤ ਜ਼ਿਪ ਦੀ ਡੀਕੰਪ੍ਰੇਸ਼ਨ ਜ਼ਿਪਫਾਈਲ ਮੋਡੀਊਲ ਨਾਲ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ (ਹੇਠਾਂ ਦੇਖੋ)।
ZIP ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰੋ।
ਤੁਸੀਂ ਇੱਕ ਮੌਜੂਦਾ ZIP ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦੇ ਹੋ।
ਕੰਸਟਰਕਟਰ ਵਿੱਚ ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ ਫਾਈਲ ਨੂੰ ਮੌਜੂਦਾ ਜ਼ਿਪ ਫਾਈਲ ਦੇ ਮਾਰਗ ਤੇ ਅਤੇ ਦੂਜੀ ਆਰਗੂਮੈਂਟ ਮੋਡ ਨੂੰ ‘r’ ਤੇ ਸੈੱਟ ਕਰਕੇ ਇੱਕ ZipFile ਆਬਜੈਕਟ ਬਣਾਓ। ਮੋਡ ਆਰਗੂਮੈਂਟ ਨੂੰ ਛੱਡਿਆ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਡਿਫੌਲਟ ‘r’ ਹੈ।
ਤੁਸੀਂ ਪੁਰਾਲੇਖ ਫਾਈਲਾਂ ਦੀ ਸੂਚੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਜ਼ਿਪਫਾਈਲ ਆਬਜੈਕਟ ਦੀ ਨੇਮਲਿਸਟ() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।
with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
print(existing_zip.namelist())
# ['test1.txt', 'zipdir/test2.txt', 'zipdir/sub_dir/test3.txt', 'test4.txt']
ZIP ਫਾਈਲ ਦੀ ਸਮੁੱਚੀ ਸਮੱਗਰੀ ਨੂੰ ਐਕਸਟਰੈਕਟ (ਅਨਪੈਕ) ਕਰੋ।
ਜ਼ਿਪ ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਨੂੰ ਅਨਪੈਕ ਕਰਨ ਲਈ, ਕੰਸਟਰਕਟਰ ਵਿੱਚ ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ ਫਾਈਲ ਨਾਲ ਮੌਜੂਦਾ ZIP ਫਾਈਲ ਦੇ ਮਾਰਗ ਵਜੋਂ ਅਤੇ ਦੂਜੀ ਆਰਗੂਮੈਂਟ ਮੋਡ ਨੂੰ ‘r’ ਦੇ ਰੂਪ ਵਿੱਚ ਇੱਕ ZipFile ਆਬਜੈਕਟ ਬਣਾਓ, ਜਿਵੇਂ ਕਿ ਉੱਪਰ ਦਿੱਤੀ ਗਈ ਉਦਾਹਰਣ ਵਿੱਚ ਹੈ। ਮੋਡ ਆਰਗੂਮੈਂਟ ਨੂੰ ਛੱਡਿਆ ਜਾ ਸਕਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹ ਡਿਫੌਲਟ ‘r’ ਹੈ।
ZipFile ਆਬਜੈਕਟ ਦੀ extractall() ਵਿਧੀ ZIP ਫਾਈਲ ਦੀ ਸਮੁੱਚੀ ਸਮੱਗਰੀ ਨੂੰ ਐਕਸਟਰੈਕਟ (ਅਨਕੰਪਰੈੱਸ) ਕਰਦੀ ਹੈ। ਪਹਿਲਾ ਆਰਗੂਮੈਂਟ, ਮਾਰਗ, ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਡਾਇਰੈਕਟਰੀ ਦਾ ਮਾਰਗ ਦਰਸਾਉਂਦਾ ਹੈ। ਜੇਕਰ ਇਸਨੂੰ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਫਾਈਲਾਂ ਨੂੰ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਐਕਸਟਰੈਕਟ ਕੀਤਾ ਜਾਵੇਗਾ।
with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
existing_zip.extractall('data/temp/ext')
ਪਾਸਵਰਡ ਵਾਲੀ ਇੱਕ ZIP ਫਾਈਲ ਨੂੰ extractall() ਵਿਧੀ ਦੇ ਆਰਗੂਮੈਂਟ pwd ਵਜੋਂ ਪਾਸਵਰਡ ਨਿਰਧਾਰਤ ਕਰਕੇ ਐਕਸਟਰੈਕਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
pass_zip.extractall('data/temp/ext_pass', pwd='password')
ZIP ਫਾਈਲ ਦੀ ਸਮੱਗਰੀ ਚੁਣੋ ਅਤੇ ਇਸਨੂੰ ਐਕਸਟਰੈਕਟ ਕਰੋ।
ਜੇਕਰ ਤੁਸੀਂ ਸਿਰਫ਼ ਕੁਝ ਫਾਈਲਾਂ ਨੂੰ ਅਨਪੈਕ ਅਤੇ ਐਕਸਟਰੈਕਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ extract() ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰੋ।
extract() ਵਿਧੀ ਦਾ ਪਹਿਲਾ ਆਰਗੂਮੈਂਟ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਫਾਈਲ ਦਾ ਨਾਮ ਹੈ, ਅਤੇ ਦੂਜਾ ਆਰਗੂਮੈਂਟ ਮਾਰਗ ਐਕਸਟਰੈਕਟ ਕਰਨ ਲਈ ਡਾਇਰੈਕਟਰੀ ਦਾ ਮਾਰਗ ਹੈ। ਜੇਕਰ ਪਾਥ ਆਰਗੂਮੈਂਟ ਨੂੰ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਫਾਈਲ ਨੂੰ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਐਕਸਟਰੈਕਟ ਕੀਤਾ ਜਾਵੇਗਾ। ਐਕਸਟਰੈਕਟ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਫਾਈਲ ਦੇ ਨਾਮ ਵਿੱਚ ZIP ਫਾਈਲ ਵਿੱਚ ਡਾਇਰੈਕਟਰੀ ਦਾ ਮਾਰਗ ਸ਼ਾਮਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੇਕਰ ਇਹ ਉੱਥੇ ਸਟੋਰ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
with zipfile.ZipFile('data/temp/new_comp.zip') as existing_zip:
existing_zip.extract('test1.txt', 'data/temp/ext2')
extractall() ਵਿਧੀ ਵਾਂਗ, extract() ਵਿਧੀ ਤੁਹਾਨੂੰ ਆਰਗੂਮੈਂਟ pwd ਵਜੋਂ ਇੱਕ ਪਾਸਵਰਡ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ।
with zipfile.ZipFile('data/temp/new_comp_with_pass.zip') as pass_zip:
pass_zip.extract('test1.txt', 'data/temp/ext_pass2', pwd='password')