ការបង្ហាប់ថតឯកសារ (ថតឯកសារ) ចូលទៅក្នុង zip ឬ tar នៅក្នុង Python

អាជីវកម្ម

នៅពេលបង្ហាប់ថតទាំងមូល (ថតឯកសារ) ទៅក្នុងឯកសារហ្ស៊ីបក្នុង Python អ្នកអាចប្រើ os.scandir() ឬ os.listdir() ដើម្បីបង្កើតបញ្ជីឯកសារ ហើយប្រើម៉ូឌុល zipfile ដើម្បីបង្ហាប់ពួកវា ប៉ុន្តែវាកាន់តែងាយស្រួលប្រើ។ make_archive () នៃម៉ូឌុល shutil គឺងាយស្រួលជាង។

បន្ថែមពីលើ zip ទម្រង់ផ្សេងទៀតដូចជា tar ក៏ត្រូវបានគាំទ្រផងដែរ។

សម្រាប់ព័ត៌មានបន្ថែមអំពីការបង្ហាប់ និងការមិនបង្ហាប់ឯកសារ zip ដោយប្រើម៉ូឌុល zipfile សូមយោងលើអត្ថបទខាងក្រោម។

បង្រួមថតឯកសារ (ថតឯកសារ) ទៅក្នុងឯកសារ zip:shutil.make_archive()

អាគុយម៉ង់ទីមួយ base_name បញ្ជាក់ឈ្មោះឯកសារ zip ដែលត្រូវបង្កើត (ដោយគ្មានផ្នែកបន្ថែម) ហើយអាគុយម៉ង់ទីពីរ ទ្រង់ទ្រាយ បញ្ជាក់ទ្រង់ទ្រាយប័ណ្ណសារ។

ខាងក្រោមនេះអាចត្រូវបានជ្រើសរើសសម្រាប់ទម្រង់អាគុយម៉ង់។

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

អាគុយម៉ង់ទីបី root_dir បញ្ជាក់ផ្លូវនៃថត root នៃថតដែលត្រូវបង្ហាប់ ហើយអាគុយម៉ង់ទីបួន base_dir បញ្ជាក់ផ្លូវនៃថតដែលត្រូវបង្ហាប់ទាក់ទងទៅនឹង root_dir ។ ទាំងពីរត្រូវបានកំណត់ទៅថតបច្ចុប្បន្នតាមលំនាំដើម។

ប្រសិនបើ 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 ដែល​បាន​បង្ហាប់​ជាមួយ​នឹង​ការ​កំណត់​ខាង​លើ​ដែល​លុប​ចោល base_dir នឹង​ត្រូវ​បាន​បង្រួម​ដូច​ខាង​ក្រោម។

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
Copied title and URL