আমি .bak
ডিরেক্টরিতে এক্সটেনশন সহ সমস্ত ফাইল মুছতে চাই । পাইথনে আমি কীভাবে এটি করতে পারি?
shutil.rmtree(path)
ব্যবহার করতে পারে ।
আমি .bak
ডিরেক্টরিতে এক্সটেনশন সহ সমস্ত ফাইল মুছতে চাই । পাইথনে আমি কীভাবে এটি করতে পারি?
shutil.rmtree(path)
ব্যবহার করতে পারে ।
উত্তর:
মাধ্যমে os.listdir
এবং os.remove
:
import os
filelist = [ f for f in os.listdir(mydir) if f.endswith(".bak") ]
for f in filelist:
os.remove(os.path.join(mydir, f))
বা এর মাধ্যমে glob.glob
:
import glob, os, os.path
filelist = glob.glob(os.path.join(mydir, "*.bak"))
for f in filelist:
os.remove(f)
অবশেষে ব্যবহার করে সঠিক ডিরেক্টরিতে থাকতে ভুলবেন না os.chdir
।
os.chdir
ডিরেক্টরি পরিবর্তন করতে ব্যবহার করুন । glob.glob
ফাইল নামগুলির একটি তালিকা তৈরি করতে ব্যবহার করুন যা এটি '.বাক' শেষ করে। তালিকার উপাদানগুলি কেবল স্ট্রিং।
তারপরে আপনি os.unlink
ফাইলগুলি সরাতে ব্যবহার করতে পারেন। (পিএস। os.unlink
এবং os.remove
একই ফাংশনের প্রতিশব্দ))
#!/usr/bin/env python
import glob
import os
directory='/path/to/dir'
os.chdir(directory)
files=glob.glob('*.bak')
for filename in files:
os.unlink(filename)
পাইথন ৩.৫-তে, os.scandir
যদি আপনাকে ফাইলের বৈশিষ্ট্যগুলি পরীক্ষা করতে বা টাইপ করতে হয় - os.DirEntry
ফাংশনটি দিয়ে ফিরে আসা অবজেক্টের বৈশিষ্ট্যগুলি দেখুন ।
import os
for file in os.scandir(path):
if file.name.endswith(".bak"):
os.unlink(file.path)
এটির জন্য ডিরেক্টরি পরিবর্তন করার প্রয়োজন নেই কারণ প্রত্যেকটিতে DirEntry
ইতিমধ্যে ফাইলটির পুরো পথ অন্তর্ভুক্ত রয়েছে।
if file.name.endswith(".bak"):
আপনি একটি ফাংশন তৈরি করতে পারেন। সাবডাইরেক্টরিগুলি ট্র্যাভারিংয়ের জন্য আপনার পছন্দ অনুসারে ম্যাক্সডেপথ যুক্ত করুন।
def findNremove(path,pattern,maxdepth=1):
cpath=path.count(os.sep)
for r,d,f in os.walk(path):
if r.count(os.sep) - cpath <maxdepth:
for files in f:
if files.endswith(pattern):
try:
print "Removing %s" % (os.path.join(r,files))
#os.remove(os.path.join(r,files))
except Exception,e:
print e
else:
print "%s removed" % (os.path.join(r,files))
path=os.path.join("/home","dir1","dir2")
findNremove(path,".bak")
প্রথমে সেগুলি গ্লোব করুন, তারপরে লিঙ্কমুক্ত করুন ।
লিনাক্স এবং ম্যাকোজে আপনি শেলটিতে সাধারণ কমান্ড চালাতে পারেন:
subprocess.run('rm /tmp/*.bak', shell=True)
আমি বুঝতে পারি যে এটি পুরানো; তবে, এখানে কেবল ওএস মডিউলটি ব্যবহার করে কীভাবে করা যায় ...
def purgedir(parent):
for root, dirs, files in os.walk(parent):
for item in files:
# Delete subordinate files
filespec = os.path.join(root, item)
if filespec.endswith('.bak'):
os.unlink(filespec)
for item in dirs:
# Recursively perform this operation for subordinate directories
purgedir(os.path.join(root, item))