নিষ্কাশিত গাছকে সমতল করার জন্য পাইথন স্ক্রিপ্ট
স্ক্রিপ্ট লিখিত বেলো জিপ ফাইলটি বের করে এবং এটি শীর্ষস্থানীয় ডিরেক্টরিতে থাকা ফাইলগুলি বর্তমান ওয়ার্কিং ডিরেক্টরিতে সরিয়ে দেয়। এই দ্রুত স্ক্রিপ্টটি এই নির্দিষ্ট প্রশ্নের সাথে মানানসই করা হয়েছে যেখানে একক শীর্ষস্থানীয় ডিরেক্টরিতে সমস্ত ফাইল রয়েছে, যদিও কয়েকটি সম্পাদনা দিয়ে আরও সাধারণ ক্ষেত্রে উপযুক্ত হতে পারে।
#!/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/* .