'tar' यूटिलिटी मूल रूप से UNIX ऑपरेटिंग सिस्टम के लिए पेश की गई थी। इसका उद्देश्य कई फ़ाइलों को एक सिंगल आर्काइव फ़ाइल में एकत्र करना है जिसे अक्सर टारबॉल कहा जाता है जो फ़ाइलों को वितरित करना आसान बनाता है। पायथन की स्टैंडर्ड लाइब्रेरी के tarfile मॉड्यूल में फ़ंक्शन्स टार आर्काइव बनाने और आवश्यकतानुसार टारबॉल से निकालने में मदद करते हैं। आर्काइव को gzip, bz2 और lzma कम्प्रेशन के साथ या बिना किसी कम्प्रेशन के बनाया जा सकता है।
इस मॉड्यूल में परिभाषित मुख्य फ़ंक्शन main() है जिसका उपयोग करके टार फ़ाइल में लिखना या उससे पढ़ना पूरा किया जाता है।
open()
यह फ़ंक्शन पैरामीटर के रूप में प्रदान किए गए फ़ाइल नाम से संबंधित TarFile ऑब्जेक्ट लौटाता है। फ़ंक्शन को mode नामक एक अन्य पैरामीटर की आवश्यकता होती है, जो डिफ़ॉल्ट रूप से 'r' है जो बिना कम्प्रेशन को इंगित करता है। अन्य मोड्स नीचे सूचीबद्ध हैं:
| क्र.सं. | मोड और कार्य |
|---|---|
| 1 | 'r' या 'r:*' पारदर्शी कम्प्रेशन के साथ पढ़ने के लिए खोलें। |
| 2 | 'r:' बिना कम्प्रेशन के पढ़ने के लिए खोलें। |
| 3 | 'r:gz' gzip कम्प्रेशन के साथ पढ़ने के लिए खोलें। |
| 4 | 'r:bz2' bzip2 कम्प्रेशन के साथ पढ़ने के लिए खोलें। |
| 5 | 'r:xz' lzma कम्प्रेशन के साथ पढ़ने के लिए खोलें। |
| 6 | 'x' या 'x:' बिना कम्प्रेशन के विशेष रूप से टारफ़ाइल बनाएं। |
| 7 | 'x:gz' gzip कम्प्रेशन के साथ टारफ़ाइल बनाएं। |
| 8 | 'x:bz2' bzip2 कम्प्रेशन के साथ टारफ़ाइल बनाएं। |
| 9 | 'x:xz' lzma कम्प्रेशन के साथ टारफ़ाइल बनाएं। |
| 10 | 'a' या 'a:' बिना कम्प्रेशन के अपेंडिंग के लिए खोलें। |
| 11 | 'w' या 'w:' अनकंप्रेस्ड लिखने के लिए खोलें। |
| 12 | 'w:gz' gzip कम्प्रेस्ड लिखने के लिए खोलें। |
| 13 | 'w:bz2' bzip2 कम्प्रेस्ड लिखने के लिए खोलें। |
| 14 | 'w:xz' lzma कम्प्रेस्ड लिखने के लिए खोलें। |
मॉड्यूल TarFile क्लास को परिभाषित करता है। open() फ़ंक्शन के बजाय, TarFile ऑब्जेक्ट को कंस्ट्रक्टर कॉल करके इंस्टेंटिएट किया जा सकता है।
TarFile()
इस कंस्ट्रक्टर को भी फ़ाइल नाम और मोड पैरामीटर की आवश्यकता होती है। मोड पैरामीटर के संभावित मान उपरोक्त अनुसार हैं।
इस क्लास में अन्य मेथड्स निम्न हैं:
add()
यह मेथड आर्काइव में फ़ाइल जोड़ता है। मेथड को एक नाम की आवश्यकता होती है जो फ़ाइल, डायरेक्टरी, सिम्बोलिक लिंक, शॉर्टकट आदि का नाम हो सकता है। डायरेक्ट्रीज़ डिफ़ॉल्ट रूप से रिकर्सिवली जोड़ी जाती हैं। रिकर्सिव जोड़ को रोकने के लिए recursive पैरामीटर को False पर सेट करें।
addfile()
यह मेथड आर्काइव में TarInfo ऑब्जेक्ट जोड़ता है।
extractall()
यह मेथड आर्काइव के सभी मेंबर्स को करंट पथ में निकालता है यदि कोई अन्य पथ स्पष्ट रूप से प्रदान नहीं किया गया है।
extract()
यह मेथड निर्दिष्ट मेंबर को दिए गए पथ में निकालता है, डिफ़ॉल्ट करंट पथ है।
निम्न उदाहरण gzip एल्गोरिदम के साथ कम्प्रेशन के लिए टार फ़ाइल खोलता है और इसमें फ़ाइल जोड़ता है।
>>> fp = tarfile.open("zen.tar.gz", "w:gz")
>>> fp.add("zen.txt")
>>> fp.close()
यह मानते हुए कि 'zen.txt' फ़ाइल करंट वर्किंग डायरेक्टरी में मौजूद है, इसे 'zen.tar.gz' फ़ाइल में जोड़ा जाएगा।
निम्न कोड टार आर्काइव से फ़ाइलों को निकालता है और सभी फ़ाइलों को निकालता है (इस मामले में केवल एक) और उन्हें करंट फ़ोल्डर में रखता है। परिणाम सत्यापित करने के लिए, आप करंट फ़ोल्डर में 'zen.txt' को हटा या नाम बदल सकते हैं।
>>> fp = tarfile.open("zen.tar.gz", "r:gz")
>>> fp.extractall()
>>> fp.close()
आप पाएंगे कि 'zen.txt' फ़ाइल करंट डायरेक्टरी में दिखाई देगी।
करंट डायरेक्टरी में सभी फ़ाइलों से मिलकर टार बनाने के लिए, निम्न कोड उपयोग करें:
import tarfile, glob
>>> fp = tarfile.open('file.tar', 'w')
>>> for file in glob.glob('*.*'):
... fp.add(file)
...
>>> fp.close()
कमांड लाइन इंटरफ़ेस
टार फ़ाइलों का निर्माण और निष्कर्षण कमांड लाइन इंटरफ़ेस के माध्यम से प्राप्त किया जा सकता है। उदाहरण के लिए 'lines.txt' फ़ाइल को निम्न कमांड द्वारा कमांड विंडो में निष्पादित करके टार फ़ाइल में जोड़ा जाता है:
C:\python36 >python -m tarfile -c line.tar lines.txt
निम्न कमांड लाइन विकल्पों का उपयोग किया जा सकता है:
| -l या --list | टारफ़ाइल में फ़ाइलों को सूचीबद्ध करें। |
| -c या --create | सोर्स फ़ाइलों से टारफ़ाइल बनाएं। |
| -e या --extract | टारफ़ाइल को करंट डायरेक्टरी में निकालें यदि output_dir निर्दिष्ट नहीं है। |
| -t या --test | जांचें कि टारफ़ाइल वैध है या नहीं। |
| -v या --verbose | वर्बोज़ आउटपुट। |
निम्न कमांड लाइन line.tar को करंट डायरेक्टरी के अंतर्गत newdir फ़ोल्डर में निकालेगी।
C:\python36>python -m tarfile -e line.tar newdir/
निम्न कमांड लाइन टार आर्काइव में सभी फ़ाइलों को सूचीबद्ध करेगी।
C:\python36>python -m tarfile -l files.tar
tarfile मॉड्यूल पर यह लेख इसमें परिभाषित क्लासेस और फ़ंक्शन्स की व्याख्या करता है।