নীচের স্ক্রিপ্টটি আপনার বর্ণনার ঠিক মতো করবে, এটি:
- একটি ডিরেক্টরি ভিতরে ফোল্ডার তালিকাভুক্ত
"রেকর্ডিং" নামক ফোল্ডারের জন্য প্রতিটি ফোল্ডারের ভিতরেই তাকান
- যদি এটি বিদ্যমান থাকে এবং খালি থাকে তবে এটি এর উচ্চতর ফোল্ডারটি মুছে দেয়
- যদি এটি বিদ্যমান না থাকে তবে এটি এর উচ্চতর ফোল্ডারটিও মুছে দেয়
- এ এর মধ্যে প্রথম স্তরের ফাইলগুলি মোছা হবে না।
একটি ছবিতে:
A
|
|--------123456
| |
| |----Recording
| |----a.txt
| |----b.txt
|
|
|--------635623
| |----Recording
| |
| |-------a.mp3
| |----a.txt
| |----b.txt
|
|
|--------123456
| |----Recording
| |----a.txt
| |----b.txt
|
|--------Monkey.txt
ফলাফল হবে:
A
|
|
|--------635623
| |----Recording
| |
| |-------a.mp3
| |----a.txt
| |----b.txt
|
|
|--------Monkey.txt
এই পান্ডুলিপি
#!/usr/bin/env python3
import os
import sys
import shutil
dr = sys.argv[1]
def path(*args):
return os.path.join(*args)
for d in os.listdir(dr):
try:
if not os.listdir(path(dr, d, "Recording")):
shutil.rmtree(path(dr,d))
except FileNotFoundError:
shutil.rmtree(path(dr,d))
except NotADirectoryError:
pass
ব্যবহার করা
- একটি ফাঁকা ফাইলে স্ক্রিপ্টটি অনুলিপি করুন, এটি সংরক্ষণ করুন
delete_empty.py
কমান্ড দ্বারা যুক্তি হিসাবে এটি (পূর্ণ!) ডিরেক্টরিটি (আপনার সাবডিয়ারগুলি সহ, আপনার উদাহরণে একটি) দিয়ে চালান:
python3 /path/to/delete_empty.py /path/to/directory
এটাই.
ব্যাখ্যা
স্ক্রিপ্টটিতে আপনার ফোল্ডার "এ" এর সামগ্রী সরবরাহ করা,
os.listdir(dr)
এর উপ-ডিরেক্টরিগুলি (এবং ফাইলগুলি) তালিকাভুক্ত করবে। তারপর:
if not os.listdir(path(dr, d, "Recording"))
প্রতিটি (উপ) ফোল্ডারের প্রতিটি বিষয়বস্তু তালিকাবদ্ধ করার চেষ্টা করবে, যা আইটেমটি ফাইল হলে ত্রুটি বাড়িয়ে তুলবে:
except NotADirectoryError
pass
বা যদি "রেকর্ডিং" ফোল্ডারটি একেবারেই না থাকে:
FileNotFoundError
shutil.rmtree(path(dr,d))
যদি "রেকর্ডিং" ফোল্ডারটি বিদ্যমান থাকে এবং খালি থাকে তবে উচ্চতর ফোল্ডারটি সরানো হবে:
if not os.listdir(path(dr, d, "Recording")):
shutil.rmtree(path(dr,d))
সম্পাদনা
অতিরিক্ত হিসাবে, মন্তব্যে অনুরোধ অনুসারে, এমন একটি সংস্করণ যা একাধিক সাবডিয়ার (নাম) যাচাই করবে।
ডিরেক্টরিতে তালিকাভুক্ত (শূন্যস্থান) সাবডিয়ারগুলির মধ্যে যে কোনও রয়েছে , ডিরেক্টরিটি রাখা হয়। অন্যথায় এটি মুছে ফেলা হবে।
ব্যবহার করা
- একটি ফাঁকা ফাইলে স্ক্রিপ্টটি অনুলিপি করুন, এটি সংরক্ষণ করুন
delete_empty.py
কমান্ডের মাধ্যমে আর্গুমেন্ট হিসাবে (পূর্ণ!) ডিরেক্টরিটি (আপনার সাবডিয়ার, আপনার উদাহরণে এ) এবং সাবডিয়ারদের নাম দিয়ে এটি চালান:
python3 /path/to/delete_empty.py /path/to/directory <subdir1> <subdir2> <subdir3>
এটাই.
এই পান্ডুলিপি
#!/usr/bin/env python3
import shutil
import os
import sys
dr = sys.argv[1]; matches = sys.argv[2:]
def path(*args):
return os.path.join(*args)
for d in os.listdir(dr):
# delete directory *unless* either one of the listed subdirs has files
keep = False
# check for each of the listed subdirs(names)
for name in matches:
try:
if os.listdir(path(dr, d, name)):
keep = True
break
except NotADirectoryError:
# if the item is not a dir, no use for other names to check
keep = True
break
except FileNotFoundError:
# if the name (subdir) does not exist, check for the next
pass
if not keep:
# if there is no reason to keep --> delete
shutil.rmtree(path(dr,d))
বিঃদ্রঃ
এটি আপনি যা চান ঠিক তা করে তা নিশ্চিত করার জন্য দয়া করে প্রথমে একটি পরীক্ষা ডিরেক্টরি চালান।