খালি নয় এমন ফোল্ডারটি আমি কীভাবে সরিয়ে / মুছব?


846

শূন্য নয় এমন একটি ফোল্ডার মুছতে চেষ্টা করার সময় আমি একটি 'অ্যাক্সেস অস্বীকার করা' ত্রুটি পাচ্ছি। আমি আমার প্রয়াস নিম্নলিখিত কমান্ড ব্যবহৃত: os.remove("/folder_name")

খালি নয় এমন একটি ফোল্ডার / ডিরেক্টরি মুছে ফেলার / মুছানোর সবচেয়ে কার্যকর উপায় কী?


32
এছাড়াও মনে রাখবেন যে ডিরেক্টরিটি ফাঁকা থাকলেও, os.remove আবার ব্যর্থ হবে, কারণ সঠিক ফাংশনটি os.rmdir।
tzot

এবং নির্দিষ্ট জন্য rm -rfআচরণ দেখুন: stackoverflow.com/questions/814167/...
সিরো Santilli冠状病毒审查六四事件法轮功

উত্তর:


1345
import shutil

shutil.rmtree('/folder_name')

স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স: shutil.rmtree

ডিজাইন দ্বারা, rmtreeকেবল পঠনযোগ্য ফাইলযুক্ত ফোল্ডার গাছগুলিতে ব্যর্থ। যদি আপনি চান যে কেবল ফোল্ডারে কেবল পঠনযোগ্য ফাইল রয়েছে তা নির্বিশেষে মুছে ফেলা যায়, তবে ব্যবহার করুন

shutil.rmtree('/folder_name', ignore_errors=True)

73
মনে রাখবেন যে, rmtreeসেখানে মাত্র পঠিত ফাইল যদি ব্যর্থ হবে: stackoverflow.com/questions/2656322/...
শ্রীধর Ratnakumar

9
এটি আমার পক্ষে কাজ করে না: ট্রেসব্যাক (সর্বশেষতম কলটি শেষ): "মডেল> shutil.rmtree (thistestdir) ফাইল" foo.py ", 31 লাইন, ফাইল" /usr/lib/python2.6/shutil.py ", 225 লাইন, rmtree onerror (os.rmdir, পাথ, sys.exc_info ()) ফাইল" /usr/lib/python2.6/shutil.py ", 223 লাইন, rmtree os.rmdir (পথ) OSError এ: [এর্নো ৯০] ডিরেক্টরি খালি নয়: '/ পথ / থেকে / rmtree'
ক্লেটন হিউজেস

4
ক্লেটন: সমস্ত সম্ভাবনায়, rmtree স্টাফ মুছতে ব্যস্ত থাকাকালীন একই সাথে একটি ফাইল যুক্ত করা হয়েছিল, "rm -rf" একই ব্যর্থ হবে।
ডিডিএ

13
যে কেউ জানেন যে কেন এই কার্যকারিতা ওএস প্যাকেজে নেই? OS.rmdir এর মতো দেখে মনে হচ্ছে এটি যথেষ্ট অকেজো। কেন এটি এভাবে কার্যকর করা হয়েছে তার জন্য কোনও ভাল যুক্তি?
ম্যালকম

21
@ মালকোলম প্যাকেজটি ওএস ফাংশনগুলির জন্য একটি মোড়ক। উপর POSIX সিস্টেম কাছে rmdir ব্যর্থ হয়ে যাবে যদি ডিরেক্টরির খালি না থাকে। উবুন্টু এবং উইন্ডোজ এই ক্ষেত্রে POSIX- সম্মতির জনপ্রিয় উদাহরণ।
আইয়েন স্যামুয়েল ম্যাকলিন বয়স্ক

138

থেকে পাইথন ডক্স উপর os.walk():

# Delete everything reachable from the directory named in 'top',
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

1
ঠিক আছে, আমি ডাউনমডিংয়ের ভুল করছি। তবে আমি পারি, এখনই আমি মনে করি এটি সঠিক।
ডিডিএ

3
@ ডিডিএ: শুটিল ব্যবহার করা অবশ্যই সহজতম উপায়, যদিও এই সমাধান সম্পর্কে অযৌক্তিক কিছু নেই। আমি এই উত্তরটিকে আপত্তি জানাতে পারতাম না তবে এই সময়টি কেবল আপনার ডাউনটোটটি বাতিল করার জন্য আমার আছে :)
জেরেমি ক্যান্ট্রেল

7
কোডটি নিজেই পাইথোনিক। একটি বাস্তব প্রোগ্রামে shutil.rmtree এর পরিবর্তে এটি ব্যবহার করা অযৌক্তিক হবে: এটি "এটি করার একটি সুস্পষ্ট উপায়" উপেক্ষা করবে। যাইহোক, এটি শব্দার্থবিজ্ঞান, ডাউনমোডটি সরানো।
ডিডিএ

2
@ddaa মুছে ফেলা প্রতিটি ফাইল বা দির লগ ইন করা কি অপ্রয়োজনীয়? আমি shutil.rmtree দিয়ে কিভাবে এটি নিশ্চিত না?
জোনাথন কোমার

4
@ ডিডিএ এটি চিন্তার জন্য খাদ্য ছিল অর্থাত্ বক্তব্য। আমি যানি আমি কি করছি. আমি কেবল ভেবেছিলাম যে shutil.rmtree সঠিক "ফিট" নাও হতে পারে তার একটি কারণ সরবরাহ করে আপনি "এটি করার সুস্পষ্ট উপায়" পুনর্বিবেচনা করতে চান।
জোনাথন কোমার

112
import shutil
shutil.rmtree(dest, ignore_errors=True)

1
এটা সঠিক উত্তর. আমার সিস্টেমে, যদিও আমি নির্দিষ্ট ফোল্ডারে সমস্ত কিছু লিখতে-পড়ার জন্য সেট করে রেখেছি, আমি মুছে ফেলার চেষ্টা করার পরে একটি ত্রুটি পাই। ignore_errors=Trueসমস্যা সমাধান করে
অ্যাভেন্টিনাস

3
আমার উত্তরে onerrorপ্যারামিটার পরিবর্তে ব্যবহৃত হয় ignore_errors। এইভাবে কেবল পঠনযোগ্য ফাইলগুলি উপেক্ষা করার পরিবর্তে মুছে ফেলা হবে।
ডেভ চ্যান্ডলার

হ্যাঁ, এটি ত্রুটিযুক্ত ফাইলগুলি মুছবে না। সুতরাং মূলত পুরো rmtree()পদ্ধতিটিকেই উপেক্ষা করা হয়।
জুহা আনটিনেন

1
এটি 6 বছর আগে গৃহীত উত্তরের একটি ছোট সম্পাদনা হওয়া উচিত ছিল, বরং একটি নতুন উত্তর। আমি এখন এটি করব।
জিন-ফ্রান্সোইস কর্পেট

22

পাইথন ৩.৪ থেকে আপনি ব্যবহার করতে পারেন:

import pathlib

def delete_folder(pth) :
    for sub in pth.iterdir() :
        if sub.is_dir() :
            delete_folder(sub)
        else :
            sub.unlink()
    pth.rmdir() # if you just want to delete dir content, remove this line

pthএকটি pathlib.Pathউদাহরণ যেখানে । দুর্দান্ত, তবে দ্রুততম নাও হতে পারে।


10

ডকস.প্যাথন.আর.গোর থেকে :

এই উদাহরণটি দেখায় যে কীভাবে উইন্ডোজে কোনও ডিরেক্টরি ট্রি সরানো যায় যেখানে কিছু ফাইলের কেবল তাদের পাঠযোগ্য বিট সেট থাকে। এটি অনারর কলব্যাক ব্যবহার করে কেবলমাত্র পঠনযোগ্য বিট সাফ করতে এবং পুনরায় সরানোর চেষ্টা করে at পরবর্তী যে কোনও ব্যর্থতা প্রচার করবে।

import os, stat
import shutil

def remove_readonly(func, path, _):
    "Clear the readonly bit and reattempt the removal"
    os.chmod(path, stat.S_IWRITE)
    func(path)

shutil.rmtree(directory, onerror=remove_readonly)

7
import os
import stat
import shutil

def errorRemoveReadonly(func, path, exc):
    excvalue = exc[1]
    if func in (os.rmdir, os.remove) and excvalue.errno == errno.EACCES:
        # change the file to be readable,writable,executable: 0777
        os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)  
        # retry
        func(path)
    else:
        # raiseenter code here

shutil.rmtree(path, ignore_errors=False, onerror=errorRemoveReadonly) 

যদি অগ্রাহ্য_সীমা সেট করা থাকে তবে ত্রুটিগুলি উপেক্ষা করা হবে; অন্যথায়, যদি অ্যানারআর সেট করা থাকে তবে আর্গুমেন্ট (ফানক, পাথ, এক্স_ইনফো) দিয়ে ত্রুটিটি পরিচালনা করতে বলা হয় যেখানে ফানকটি os.listdir, os.remove, বা os.rmdir; পাথ হ'ল সেই ক্রিয়াটির পক্ষে যুক্তি যা এটি ব্যর্থ হতে পারে; এবং exc_info হল sys.exc_info () দ্বারা প্রদত্ত একটি টুপল। যদি অগ্রাহ্য_অরফেসগুলি মিথ্যা এবং অ্যানারআর কোনও না হয় তবে এখানে একটি ব্যতিক্রম উত্থাপিত হয় enter


দস্তাবেজ অনুসারে , অনাররারের দ্বারা উত্থাপিত ব্যতিক্রমগুলি ধরা পড়বে না তাই আমি নিশ্চিত নই যে এখানে আপনার উত্থাপিত কোডের কোনও অর্থ আছে।
কুমারশ

-1। ডেভ চ্যান্ডলারের উত্তরের তুলনায় এটি অত্যধিক জটিল বলে মনে হচ্ছে। এছাড়াও, আমরা যদি কেবলমাত্র পঠনযোগ্যই সরাতে চাই তবে আমাদের ফাইলগুলি কার্যকর করতে হবে না।
ইডব্রাই

7

কুকুবাসিকের উত্তরের ভিত্তিতে, মুছে ফেলার আগে ফোল্ডারটি উপস্থিত রয়েছে কিনা তা আরও শক্তিশালী পরীক্ষা করে দেখুন

import shutil
def remove_folder(path):
    # check if folder exists
    if os.path.exists(path):
         # remove if exists
         shutil.rmtree(path)
    else:
         # throw your exception to handle this special scenario
         raise XXError("your exception") 
remove_folder("/folder_name")

6
এটি একটি সম্ভাব্য জাতি শর্তের পরিচয় দেয়
কোরি গোল্ডবার্গ

1
অনুযায়ী সর্বাধিক pythonic একমুখী টু ডিলিট-এ-ফাইল-যা-মে নয় অস্তিত্ব , এটা করা বাঞ্ছনীয় tryমুছে ফেলুন এবং হাতল exceptকল চেয়ে exists()প্রথম
TT--

6

যদি আপনি নিশ্চিত হন যে আপনি পুরো দির গাছটি মুছতে চান এবং dir এর বিষয়বস্তুতে আর আগ্রহী না হন তবে পুরো দির গাছের জন্য ক্রল করা বোকামি ... এটি করার জন্য কেবল অজগর থেকে নেটিভ ওএস কমান্ড কল করুন। এটি দ্রুত, দক্ষ এবং কম স্মৃতিশক্তি গ্রহণ করবে।

RMDIR c:\blah /s /q 

বা * নিক্স

rm -rf /home/whatever 

পাইথনে কোডটি দেখতে দেখতে ..

import sys
import os

mswindows = (sys.platform == "win32")

def getstatusoutput(cmd):
    """Return (status, output) of executing cmd in a shell."""
    if not mswindows:
        return commands.getstatusoutput(cmd)
    pipe = os.popen(cmd + ' 2>&1', 'r')
    text = pipe.read()
    sts = pipe.close()
    if sts is None: sts = 0
    if text[-1:] == '\n': text = text[:-1]
    return sts, text


def deleteDir(path):
    """deletes the path entirely"""
    if mswindows: 
        cmd = "RMDIR "+ path +" /s /q"
    else:
        cmd = "rm -rf "+path
    result = getstatusoutput(cmd)
    if(result[0]!=0):
        raise RuntimeError(result[1])

33
-1। ব্যবহারের পুরো পয়েন্টটি shutil.rmdirআপনাকে অপারেটিং সিস্টেমের ধরণ থেকে অন্তরক করা।
mtrw

3
আমি ধারণাটি বুঝতে পেরেছি, তবে যখন কেউ এই ফোল্ডারটি পুরোপুরি মুছতে চান সে সম্পর্কে ভালভাবে অবগত থাকে, তবে পুরো ফাইল ট্রিটি ক্রল করার কী লাভ? shutil.rmdir বিশেষত os.listdir (), os.path.islink () ইত্যাদি ইত্যাদি কল করে some কিছু বিল্ড সিস্টেমের পাশাপাশি এমএসআউটো / উইনসিসি বিকাশের জন্য এমএস উইন্ডোগুলির মতো, তবে shtuil.rmdir প্রায় সর্বদা ব্যর্থ হবে, এমএসআউটো ব্যাচ ভিত্তিক বিকাশ ব্যর্থ হওয়া প্রস্থান করার সময় কিছুটা উইন্ডার্ড বিল্ড ফাইলকে লক করে দেয় এবং কেবল rmdir / S / Q বা পুনঃসূচনা পরিষ্কার করতে সহায়ক তাদের।
প্রধানমন্ত্রী

2
হাঁ, শুধু RM কার্নেল কাছাকাছি, কম সময়, মেমরি এবং CPU- র ব্যবহার করছে ..... এবং আমি আগেই বলেছি, কারণ আমাকে এই পদ্ধতি ব্যবহার করার জন্য ছিল কারণ কেশ MSAuto ব্যাচ বিল্ড স্ক্রিপ্ট দ্বারা বামে পিছনে ...
প্রধানমন্ত্রী

3
হ্যাঁ, তবে শুটিল ব্যবহার কোডকে ক্রস প্ল্যাটফর্ম করে এবং প্ল্যাটফর্মের বিশদ বিমূর্ত করে দেয়।
xshoppyx

2
আমি মনে করি না যে এই উত্তরটি 1 এর নীচে ভোট দেওয়া উচিত কারণ এটি নির্দিষ্ট পরিস্থিতিতে যে কোনও পাঠক আগ্রহী হতে পারে তার জন্য একটি কাজের জন্য খুব সুন্দর রেফারেন্স সরবরাহ করে them আমি তাদের সাথে একাধিক পদ্ধতি যথাযথভাবে পোস্ট করা উপভোগ করি। সুতরাং যদিও আমার এটি ব্যবহার করার দরকার নেই তবে এখন আমি জানি এটি করা যায় এবং কীভাবে।
কিমিউকুইয়ার

5

উপরের উত্তরগুলি সম্পূর্ণ করার জন্য কিছু অজগর 3.5 অপশন। (আমি তাদের এখানে খুঁজে পছন্দ করতে হবে)।

import os
import shutil
from send2trash import send2trash # (shutil delete permanently)

খালি থাকলে ফোল্ডার মুছুন

root = r"C:\Users\Me\Desktop\test"   
for dir, subdirs, files in os.walk(root):   
    if subdirs == [] and files == []:
           send2trash(dir)
           print(dir, ": folder removed")

এতে এই ফাইলটি থাকলে ফোল্ডারটিও মুছুন

    elif subdirs == [] and len(files) == 1: # if contains no sub folder and only 1 file 
        if files[0]== "desktop.ini" or:  
            send2trash(dir)
            print(dir, ": folder removed")
        else:
            print(dir)

এতে যদি কেবলমাত্র এসআরটি বা .txt ফাইল (গুলি) থাকে তবে ফোল্ডারটি মুছুন

    elif subdirs == []: #if dir doesn’t contains subdirectory
        ext = (".srt", ".txt")
        contains_other_ext=0
        for file in files:
            if not file.endswith(ext):  
                contains_other_ext=True
        if contains_other_ext== 0:
                send2trash(dir)
                print(dir, ": dir deleted")

ফোল্ডারটির আকার 400kb এর চেয়ে কম হলে মুছুন:

def get_tree_size(path):
    """Return total size of files in given path and subdirs."""
    total = 0
    for entry in os.scandir(path):
        if entry.is_dir(follow_symlinks=False):
            total += get_tree_size(entry.path)
        else:
            total += entry.stat(follow_symlinks=False).st_size
    return total


for dir, subdirs, files in os.walk(root):   
    If get_tree_size(dir) < 400000:  # ≈ 400kb
        send2trash(dir)
    print(dir, "dir deleted")

4
দয়া করে if files[0]== "desktop.ini" or:
ইনডেন্ট্যাটিয়ন

5

আমি একটি "খাঁটি প্যাথলিব" পদ্ধতির যোগ করতে চাই:

from pathlib import Path
from typing import Union

def del_dir(target: Union[Path, str], only_if_empty: bool = False):
    target = Path(target).expanduser()
    assert target.is_dir()
    for p in sorted(target.glob('**/*'), reverse=True):
        if not p.exists():
            continue
        p.chmod(0o666)
        if p.is_dir():
            p.rmdir()
        else:
            if only_if_empty:
                raise RuntimeError(f'{p.parent} is not empty!')
            p.unlink()
    target.rmdir()

এটি Pathঅদৃশ্যযোগ্য সত্যটির উপর নির্ভর করে এবং দীর্ঘ পথগুলি সর্বদা ছোট পথগুলির পরে বাছাই করে ঠিক ঠিক রাখে str। সুতরাং, ডিরেক্টরি ফাইলের আগে আসবে। যদি আমরা বাছাইটি উল্টিয়ে ফেলি তবে ফাইলগুলি তাদের নিজ নিজ পাত্রে আসার আগে চলে আসবে, সুতরাং আমরা কেবল একটি পাস দিয়ে একে একে লিঙ্কমুক্ত / rmdir করতে পারি।

উপকারিতা:

  • এটি বাহ্যিক বাইনারিগুলির উপর নির্ভর করে না: পাইথনের ব্যাটারি-অন্তর্ভুক্ত মডিউলগুলি সমস্ত কিছু ব্যবহার করে (পাইথন> = 3.6)
  • এটি দ্রুত এবং স্মৃতিশক্তি-দক্ষ: কোনও পুনরাবৃত্তি স্ট্যাক নেই, উপ-প্রসেস শুরু করার দরকার নেই
  • এটি ক্রস প্ল্যাটফর্ম (অন্ততপক্ষে, pathlibপাইথন ৩.6 এ প্রতিশ্রুতি দেয়; উইন্ডোজে চালনা না করার জন্য উপরে কোনও অপারেশন বলা হয়নি)
  • প্রয়োজনে, একটি খুব দানাদার লগিং করতে পারে, উদাহরণস্বরূপ, প্রতিটি মুছে ফেলা যেমন হয় তেমনি লগ করুন।

আপনি যেমন ব্যবহারের উদাহরণ প্রদান করতে পারেন যেমন del_dir (পথ ())? ধন্যবাদ
lcapra

@lcapra প্রথম আরগ হিসাবে মুছে ফেলার জন্য কেবল ডিরেক্টরিটিকে এটি কল করুন।
পেপলুয়ান

3
def deleteDir(dirPath):
    deleteFiles = []
    deleteDirs = []
    for root, dirs, files in os.walk(dirPath):
        for f in files:
            deleteFiles.append(os.path.join(root, f))
        for d in dirs:
            deleteDirs.append(os.path.join(root, d))
    for f in deleteFiles:
        os.remove(f)
    for d in deleteDirs:
        os.rmdir(d)
    os.rmdir(dirPath)

স্ক্রিপ্ট তৈরি করতে দুর্দান্ত যা ফাইলগুলিকে অন্ধভাবে সরানোর আগে তাকে কোয়ারেন্টিনে রাখে।
রেকিটারো

3

আপনি যদি shutilমডিউলটি ব্যবহার করতে না চান তবে আপনি কেবল osমডিউলটি ব্যবহার করতে পারেন ।

from os import listdir, rmdir, remove
for i in listdir(directoryToRemove):
    os.remove(os.path.join(directoryToRemove, i))
rmdir(directoryToRemove) # Now the directory is empty of files

2
os.removeতাই এই উঠাবে ডিরেক্টরি সরাতে পারবেন না OsErrorযদি directoryToRemoveসাবডিরেক্টরি ধারণ করে।
এপিমনাম

# প্রনোটোরেসেকেন্ডিশনস
কাপাড

3

দশ বছর পরে এবং পাইথন ৩.7 এবং লিনাক্স ব্যবহার করে এখনও এটি করার বিভিন্ন উপায় রয়েছে:

import subprocess
from pathlib import Path

#using pathlib.Path
path = Path('/path/to/your/dir')
subprocess.run(["rm", "-rf", str(path)])

#using strings
path = "/path/to/your/dir"
subprocess.run(["rm", "-rf", path])

মূলত এটি ব্যাশ স্ক্রিপ্টটি চালাতে পাইথনের সাবপ্রসেস মডিউলটি $ rm -rf '/path/to/your/dirব্যবহার করছে যেন আপনি একই টাস্কটি সম্পাদন করতে টার্মিনালটি ব্যবহার করছেন। এটি পুরোপুরি পাইথন নয়, তবে এটি সম্পন্ন হয়ে যায়।

আমি pathlib.Pathউদাহরণটি অন্তর্ভুক্ত করার কারণটি হ'ল কারণ আমার অভিজ্ঞতায় পরিবর্তিত অনেক পাথের সাথে কাজ করার সময় এটি খুব কার্যকর। pathlib.Pathমডিউলটি আমদানি করার এবং শেষ ফলাফলগুলিকে স্ট্রিংয়ে রূপান্তর করার অতিরিক্ত পদক্ষেপগুলি বিকাশের সময়ের জন্য আমার কাছে প্রায়শই কম ব্যয়। Path.rmdir()স্পষ্টভাবে খালি খালি ডায়ারগুলি হ্যান্ডেল করার জন্য কোনও আরগ বিকল্প নিয়ে এসে এলে সুবিধাজনক হবে ।


আমি এই পদ্ধতির দিকেও স্যুইচ করেছি, কারণ আমি ইস্যুতে ছড়িয়ে পড়েছি rmtreeএবং লুকানো ফোল্ডারগুলি পছন্দ করে .vscode। এই ফোল্ডারটি পাঠ্য-ফাইল হিসাবে চিহ্নিত হয়েছিল এবং ত্রুটিটি আমাকে বলেছিল যে এই ফাইলটি busyমুছে ফেলা যায় না।
ড্যানিয়েল আইজেনরিচ

2

কোনও ফোল্ডারটি উপস্থিত না থাকলেও মুছে ফেলার জন্য ( চার্লস চৌর জবাবের রেসের শর্ত এড়ানো ) তবে অন্য জিনিসগুলি ভুল হয়ে গেলে তবু ত্রুটি রয়েছে (যেমন অনুমতি সমস্যা, ডিস্ক পড়ার ত্রুটি, ফাইলটি ডিরেক্টরি নয়)

পাইথন 3.x এর জন্য:

import shutil

def ignore_absent_file(func, path, exc_inf):
    except_instance = exc_inf[1]
    if isinstance(except_instance, FileNotFoundError):
        return
    raise except_instance

shutil.rmtree(dir_to_delete, onerror=ignore_absent_file)

পাইথন ২.7 কোডটি প্রায় একই রকম:

import shutil
import errno

def ignore_absent_file(func, path, exc_inf):
    except_instance = exc_inf[1]
    if isinstance(except_instance, OSError) and \
        except_instance.errno == errno.ENOENT:
        return
    raise except_instance

shutil.rmtree(dir_to_delete, onerror=ignore_absent_file)

1

ওএসওয়াকের সাহায্যে আমি 3 টি ওয়ান-লাইনার পাইথন কলযুক্ত সমাধানটি প্রস্তাব করব:

python -c "import sys; import os; [os.chmod(os.path.join(rs,d), 0o777) for rs,ds,fs in os.walk(_path_) for d in ds]"
python -c "import sys; import os; [os.chmod(os.path.join(rs,f), 0o777) for rs,ds,fs in os.walk(_path_) for f in fs]"
python -c "import os; import shutil; shutil.rmtree(_path_, ignore_errors=False)"

প্রথম স্ক্রিপ্ট chmod এর সমস্ত উপ ডিরেক্টরি, দ্বিতীয় স্ক্রিপ্ট chmod এর সমস্ত ফাইল। তারপরে তৃতীয় লিপিটি কোনও প্রতিবন্ধকতা ছাড়াই সবকিছু সরিয়ে দেয়।

আমি জেনকিন্স জবটিতে "শেল স্ক্রিপ্ট" থেকে এটি পরীক্ষা করেছি (আমি এসসিএম-তে একটি নতুন পাইথন স্ক্রিপ্ট সংরক্ষণ করতে চাইনি, এজন্যই একটি লাইন সমাধান সন্ধান করা হয়েছিল) এবং এটি লিনাক্স এবং উইন্ডোজের জন্য কাজ করেছে।


এর সাথে pathlib, আপনি প্রথম দুটি পদক্ষেপ একটিতে একত্রিত করতে পারেন:[p.chmod(0o666) for p in pathlib.Path(_path_).glob("**/*")]
পেপলুয়ান

0

সরলতার জন্য আপনি os.system কমান্ড ব্যবহার করতে পারেন:

import os
os.system("rm -rf dirname")

স্পষ্টতই, এটি আসলে এই টাস্কটি সম্পাদনের জন্য সিস্টেম টার্মিনালকে অনুরোধ করে।


19
দুঃখিত, এটি আনপাইথোনিক এবং প্ল্যাটফর্ম নির্ভর।
অমি টাভরি

0

উইন্ডোজ ওএস এ যে কোনও ফোল্ডার (এমনকি খালি নয়) বা ফাইল মুছতে খুব সহজ উপায় আমি পেয়েছি ।

os.system('powershell.exe  rmdir -r D:\workspace\Branches\*%s* -Force' %CANDIDATE_BRANCH)

0

উইন্ডোজের জন্য, যদি ডিরেক্টরিটি খালি না থাকে এবং আপনার কেবল পঠনযোগ্য ফাইল রয়েছে বা আপনি যেমন ত্রুটি পান

  • Access is denied
  • The process cannot access the file because it is being used by another process

এটা চেষ্টা কর, os.system('rmdir /S /Q "{}"'.format(directory))

এটি rm -rfলিনাক্স / ম্যাকের সমতুল্য ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.