दिलचस्प पोस्ट
मैं एक स्ट्रिंग को डॉट और कॉमा के साथ पायथन में फ्लोट संख्या में कनवर्ट कैसे कर सकता हूं UIWebView का उपयोग किए बिना आईफोन ऐप में यूट्यूब वीडियो चलाएं? Lucene के नए विश्लेषण InfixSuggester API का उपयोग करने के लिए स्वत: सुझाव कैसे कार्यान्वित करें? ऑडियो रिकॉर्ड करें और IOS में स्थायी रूप से सहेजें INotifyPropertyChanged प्रॉपर्टी नाम – हार्डकोड बनाम प्रतिबिंब? कैसे एक चर को बताने के लिए यह संभव है, लेकिन स्ट्रिंग नहीं है PHP 5 में कॉलर फ़ंक्शन? मैं Bash में 'if' कथन में दो स्ट्रिंग चर की तुलना कैसे करूं? Vdso और vsyscall क्या हैं? मेरे सिस्टम.आउट.प्रिंट () स्टेटमेंट को कहाँ भेजता है? (stdout) Awk में दूसरा अंतिम स्तंभ / फ़ील्ड प्रिंट करें दबाए बटन दबाए जाने के बाद प्रपत्र मूल्य बदलें एएसपी.नेट एएसएमएक्स वेब सेवा के लिए SOAP अनुरोधों को कैप्चर करना कार्यक्रम में एक स्थैतिक 'मेन' ​​विधि एक प्रवेश बिंदु के लिए उपयुक्त नहीं है पृष्ठ को ताज़ा करने के बिना मैं पृष्ठ यूआरएल कैसे बदल सकता हूँ?

मैं एक फ़ोल्डर को कैसे हटाऊं / हटाऊं जो कि पायथन के साथ खाली नहीं है?

जब मैं एक फ़ोल्डर को खाली करने का प्रयास करता हूं जो खाली नहीं है तो मुझे 'एक्सेस इनकार किया गया' त्रुटि मिल रही है मैंने अपने प्रयास में निम्नलिखित कमांड का इस्तेमाल किया: os.remove("/folder_name")

खाली फ़ोल्डर / निर्देशिका को निकालने / हटाने का सबसे प्रभावी तरीका क्या है?

Solutions Collecting From Web of "मैं एक फ़ोल्डर को कैसे हटाऊं / हटाऊं जो कि पायथन के साथ खाली नहीं है?"

 import shutil shutil.rmtree('/folder_name') 

मानक पुस्तकालय संदर्भ: shutil.rmtree

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)) 
 import shutil shutil.rmtree(dest, ignore_errors=True) 

अजगर 3.4 से आप उपयोग कर सकते हैं:

 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 उदाहरण है अच्छा है, लेकिन सबसे तेजी से नहीं हो सकता है

 shutil.rmtree(path,ignore_errors=False,onerror=errorRemoveReadonly) 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 

यदि ignore_errors सेट है, तो त्रुटियों को अनदेखा कर दिया जाता है; अन्यथा, यदि आतंक सेट किया गया है, तो इसे तर्कों (फ़ंक, पथ, एक्स्टिन इन्फॉर्फ़) में त्रुटि को संभालने के लिए कहा जाता है, जहां फ़ंक्शन ओएसलिस्टडि, ओ। रिवॉव, या ओएसआरएमडीआर; पथ उस फ़ंक्शन का तर्क है जो इसे विफल करने के कारण हुआ; और exc_info एक tuple है वापस sys.exc_info ()। अगर ignore_errors गलत है और आतंक कोई भी नहीं है, एक अपवाद उठाया है। केंद्र कोड यहाँ

ककिबुसिक के उत्तर पर आधार, जांचें कि फ़ोल्डर निकालने से पहले मौजूद है, अधिक मजबूत

 import shutil def remove_folder(path): # check if folder exists if os.path.exists(path): # remove if exists shutil.rmtree(path) remove_folder("/folder_name") 

यदि आप सुनिश्चित हैं, कि आप पूरे डीआईआर ट्री को हटाना चाहते हैं, और डीआईआर की सामग्री में कोई दिलचस्पी नहीं है, तो पूरे डीआईआर ट्री के लिए क्रॉल बेवकूफी है … बस अजगर से मूल ओएस कमांड को कॉल करने के लिए ऐसा करें। यह तेज, कुशल और कम स्मृति उपभोग होगा

 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]) 

Docs.python.org से :

यह उदाहरण दिखाता है कि विंडोज़ पर एक डायरेक्ट्री ट्री कैसे हटाई जा सकती है जहां कुछ फ़ाइलों में केवल पढ़ने के लिए बिट सेट है यह केवल पढ़ने के लिए बिट को खाली करने के लिए आतंक कॉलबैक का उपयोग करता है और निकाले जाने के पुन: प्रयास करता है। किसी भी बाद की असफलता का प्रसार होगा।

 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) 

ऊपर दिए गए उत्तरों को पूरा करने के लिए बस कुछ अजगर 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) 

फ़ोल्डर को हटा दें यदि इसमें केवल .srt या .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") 

अगर आप 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 

एक फ़ोल्डर को हटाने के लिए, भले ही वह मौजूद न हो ( चार्ल्स चाउ के उत्तर में रेस की स्थिति से बचने) लेकिन अभी भी त्रुटियाँ हैं जब अन्य चीजें गलत हो जाती हैं (उदाहरण के लिए अनुमति समस्याएं, डिस्क पढ़ने की त्रुटि, फ़ाइल निर्देशिका नहीं है)

पायथन 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) 

अजगर 2.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) 
 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) 

आप सादगी के लिए os.system कमांड का उपयोग कर सकते हैं:

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

स्पष्ट रूप से, यह वास्तव में इस कार्य को पूरा करने के लिए सिस्टम टर्मिनल को आह्वान करता है।