निकाले गए पेड़ को समतल करने के लिए पायथन लिपि
स्क्रिप्ट लिखी गई bellow अर्क ज़िप फ़ाइल को ले जाती है और इसमें मौजूद सबसे ऊपरी निर्देशिका के भीतर मौजूद फ़ाइलों को वर्तमान कार्यशील निर्देशिका में ले जाती है। यह त्वरित स्क्रिप्ट इस विशेष प्रश्न के अनुरूप है जहां एक एकल शीर्ष निर्देशिका है जिसमें सभी फाइलें हैं, हालांकि कुछ संपादन के साथ अधिक सामान्य मामलों के लिए उपयुक्त बनाया जा सकता है।
#!/usr/bin/env python3
import sys
import os
from zipfile import PyZipFile
for zip_file in sys.argv[1:]:
pzf = PyZipFile(zip_file)
namelist=pzf.namelist()
top_dir = namelist[0]
pzf.extractall(members=namelist[1:])
for item in namelist[1:]:
rename_args = [item,os.path.basename(item)]
print(rename_args)
os.rename(*rename_args)
os.rmdir(top_dir)
परीक्षण चालन
यहाँ एक उदाहरण है कि स्क्रिप्ट को कैसे काम करना चाहिए। सब कुछ वर्तमान कार्यशील निर्देशिका में निकाला जाता है, लेकिन स्रोत फ़ाइल पूरी तरह से अलग-अलग निर्देशिका में हो सकती है। परीक्षण मेरे व्यक्तिगत गितुब भंडार के ज़िप संग्रह पर किया जाता है।
$ ls
flatten_zip.py* master.zip
$ ./flatten_zip.py master.zip
['utc-time-indicator-master/.gitignore', '.gitignore']
['utc-time-indicator-master/LICENSE', 'LICENSE']
['utc-time-indicator-master/utc-time-indicator', 'utc-time-indicator']
['utc-time-indicator-master/utc_indicator.png', 'utc_indicator.png']
$ ls
flatten_zip.py* LICENSE master.zip utc_indicator.png utc-time-indicator
स्रोत फ़ाइल का परीक्षण अलग-अलग स्थान पर किया जा रहा है
$ mkdir test_unzip
$ cd test_unzip
$ ../flatten_zip.py ../master.zip
['utc-time-indicator-master/.gitignore', '.gitignore']
['utc-time-indicator-master/LICENSE', 'LICENSE']
['utc-time-indicator-master/utc-time-indicator', 'utc-time-indicator']
['utc-time-indicator-master/utc_indicator.png', 'utc_indicator.png']
$ ls
LICENSE utc_indicator.png utc-time-indicator
unzip archive.zip && mv Release/* .