ਪਾਈਥਨ ਵਿੱਚ ਇੱਕ ਡਾਇਰੈਕਟਰੀ (ਫੋਲਡਰ) ਨੂੰ ਜ਼ਿਪ ਜਾਂ ਟਾਰ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰਨਾ

ਕਾਰੋਬਾਰ

ਪਾਈਥਨ ਵਿੱਚ ਇੱਕ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਇੱਕ ਪੂਰੀ ਡਾਇਰੈਕਟਰੀ (ਫੋਲਡਰ) ਨੂੰ ਸੰਕੁਚਿਤ ਕਰਨ ਵੇਲੇ, ਤੁਸੀਂ ਫਾਈਲਾਂ ਦੀ ਸੂਚੀ ਬਣਾਉਣ ਲਈ os.scandir() ਜਾਂ os.listdir() ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਸੰਕੁਚਿਤ ਕਰਨ ਲਈ zipfile ਮੋਡੀਊਲ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ, ਪਰ ਇਸਦੀ ਵਰਤੋਂ ਕਰਨਾ ਆਸਾਨ ਹੈ। shutil ਮੋਡੀਊਲ ਦਾ make_archive () ਸੌਖਾ ਹੈ।

ਜ਼ਿਪ ਤੋਂ ਇਲਾਵਾ, ਹੋਰ ਫਾਰਮੈਟ ਜਿਵੇਂ ਕਿ ਟਾਰ ਵੀ ਸਮਰਥਿਤ ਹਨ।

ਜ਼ਿਪ ਫਾਈਲ ਮੋਡੀਊਲ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਜ਼ਿਪ ਫਾਈਲਾਂ ਨੂੰ ਸੰਕੁਚਿਤ ਅਤੇ ਅਣਕੰਪਰੈਸ ਕਰਨ ਬਾਰੇ ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਹੇਠਾਂ ਦਿੱਤੇ ਲੇਖ ਨੂੰ ਵੇਖੋ।

ਇੱਕ ਡਾਇਰੈਕਟਰੀ (ਫੋਲਡਰ) ਨੂੰ ਇੱਕ ਜ਼ਿਪ ਫਾਈਲ ਵਿੱਚ ਸੰਕੁਚਿਤ ਕਰੋ:shutil.make_archive()

ਪਹਿਲੀ ਆਰਗੂਮੈਂਟ, ਬੇਸ_ਨਾਮ, ਬਣਾਈ ਜਾਣ ਵਾਲੀ ਜ਼ਿਪ ਫਾਈਲ ਦਾ ਨਾਮ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ (ਬਿਨਾਂ ਐਕਸਟੈਂਸ਼ਨ), ਅਤੇ ਦੂਜੀ ਆਰਗੂਮੈਂਟ, ਫਾਰਮੈਟ, ਆਰਕਾਈਵ ਫਾਰਮੈਟ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਦੀ ਹੈ।

ਹੇਠਾਂ ਦਿੱਤੇ ਨੂੰ ਆਰਗੂਮੈਂਟ ਫਾਰਮੈਟ ਲਈ ਚੁਣਿਆ ਜਾ ਸਕਦਾ ਹੈ।

  • zip'
  • tar'
  • gztar'
  • bztar'
  • xztar'

ਤੀਜਾ ਆਰਗੂਮੈਂਟ, ਰੂਟ_ਡੀਰ, ਸੰਕੁਚਿਤ ਹੋਣ ਵਾਲੀ ਡਾਇਰੈਕਟਰੀ ਦੀ ਰੂਟ ਡਾਇਰੈਕਟਰੀ ਦਾ ਮਾਰਗ ਦਰਸਾਉਂਦਾ ਹੈ, ਅਤੇ ਚੌਥਾ ਆਰਗੂਮੈਂਟ, ਬੇਸ_ਡੀਰ, ਰੂਟ_ਡੀਰ ਦੇ ਨਾਲ ਸੰਕੁਚਿਤ ਹੋਣ ਵਾਲੀ ਡਾਇਰੈਕਟਰੀ ਦਾ ਮਾਰਗ ਦਰਸਾਉਂਦਾ ਹੈ। ਦੋਵੇਂ ਮੂਲ ਰੂਪ ਵਿੱਚ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਸੈੱਟ ਹਨ।

ਜੇਕਰ base_dir ਨੂੰ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਪੂਰਾ root_dir ਸੰਕੁਚਿਤ ਹੋ ਜਾਵੇਗਾ।

data/temp
ਉਦਾਹਰਨ ਲਈ, ਮੰਨ ਲਓ ਕਿ ਸਾਡੇ ਕੋਲ ਹੇਠਾਂ ਦਿੱਤੇ ਢਾਂਚੇ ਵਾਲੀ ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਹੈ।

dir
├── dir_sub
   └── test_sub.txt
└── test.txt
import shutil

shutil.make_archive('data/temp/new_shutil', 'zip', root_dir='data/temp/dir')

ਬੇਸ_ਡੀਆਰ ਨੂੰ ਛੱਡ ਕੇ ਉਪਰੋਕਤ ਸੈਟਿੰਗਾਂ ਨਾਲ ਸੰਕੁਚਿਤ new_shutil.zip ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਡੀਕੰਪ੍ਰੈਸ ਕੀਤਾ ਜਾਵੇਗਾ।

new_shutil
├── dir_sub
   └── test_sub.txt
└── test.txt

ਫਿਰ, ਜੇਕਰ root_dir ਵਿੱਚ ਡਾਇਰੈਕਟਰੀ base_dir ਲਈ ਨਿਰਧਾਰਤ ਕੀਤੀ ਗਈ ਹੈ, ਤਾਂ ਹੇਠਾਂ ਦਿਖਾਇਆ ਜਾਵੇਗਾ।

shutil.make_archive('data/temp/new_shutil_sub', 'zip', root_dir='data/temp/dir', base_dir='dir_sub')

ਉਪਰੋਕਤ ਸੈਟਿੰਗਾਂ ਨਾਲ ਸੰਕੁਚਿਤ new_shutil_sub.zip ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਡੀਕੰਪ੍ਰੈਸ ਕੀਤਾ ਜਾਵੇਗਾ।

dir_sub
└── test_sub.txt