फाइल्स रेगुलेटरी को डिलीट करने के लिए पाइथन लिपियाँ

नियमित रूप से मैन्युअल रूप से फ़ाइल सिस्टम की सफाई करना अच्छा नहीं है। उन्हें स्वचालित करें!


फ़ाइलों और फ़ोल्डरों को मैन्युअल रूप से हटाना एक रोमांचक काम नहीं है, जैसा कि कोई सोच सकता है। यह उन्हें स्वचालित करने के लिए समझ में आता है.

यहाँ हमारे जीवन को आसान बनाने के लिए पायथन आता है। पायथन स्क्रिप्टिंग के लिए एक उत्कृष्ट प्रोग्रामिंग भाषा है। हम बिना किसी बाधा के अपना काम पूरा करने के लिए अजगर का फायदा उठाने जा रहे हैं। सबसे पहले, आपको पता होना चाहिए कि पायथन एक अच्छा विकल्प क्यों है.

  • पायथन स्वचालित कार्यों के लिए एक सर्वकालिक पसंदीदा भाषा है
  • अन्य प्रोग्रामिंग भाषाओं की तुलना में कम कोड
  • पायथन सभी ऑपरेटिंग सिस्टम के साथ संगत है। आप विंडोज, लिनक्स और मैक में एक ही कोड चला सकते हैं.
  • पायथन में ओएस नामक एक मॉड्यूल है जो हमें ऑपरेटिंग सिस्टम के साथ बातचीत करने में मदद करता है। हम फ़ाइलों को हटाने के अपने स्वचालन को पूरा करने के लिए इस मॉड्यूल का उपयोग करने जा रहे हैं.

हम पायथन का उपयोग करके किसी भी कष्टप्रद या दोहराव वाले सिस्टम कार्यों को बदल सकते हैं। यदि आप पायथन को जानते हैं तो एक विशिष्ट प्रणाली कार्य पूरा करने के लिए स्क्रिप्ट लिखना एक कपकेक है। आइए निम्नलिखित उपयोग के मामले को देखें.

नोट: निम्नलिखित पायथन 3.6 पर परीक्षण किए गए हैं+

एक्स दिनों की तुलना में पुरानी फ़ाइलों / फ़ोल्डरों को हटाना

अक्सर आपको पुराने लॉग की आवश्यकता नहीं होती है, और आपको स्टोरेज उपलब्ध करने के लिए नियमित रूप से उन्हें साफ करने की आवश्यकता होती है। यह कुछ भी हो सकता है और न केवल लॉग.

हमारे पास ओएस मॉड्यूल में स्टैट नामक एक विधि है जो अंतिम पहुंच का विवरण देती है (St_atime), परिवर्तन (St_mtime), और मेटाडेटा संशोधन (St_ctime) समय। युग के बाद से सभी विधियाँ सेकंडों में समय लौटाती हैं। आप युग के बारे में अधिक जानकारी पा सकते हैं यहाँ.

हम एक फ़ोल्डर के सबफ़ोल्डर के माध्यम से ट्रैवर्सिंग के लिए os.walk (पथ) नामक एक विधि का उपयोग करेंगे.

दिनों की संख्या के आधार पर विलोपन फ़ाइलों / फ़ोल्डरों के लिए कोड लिखने के लिए नीचे दिए गए चरणों का पालन करें.

  • मॉड्यूल आयात करें समय, ओएस, शील
  • चर के लिए पथ और दिन निर्धारित करें
  • दिनों की संख्या को सेकंडों में परिवर्तित करें time.time () तरीका
  • जाँच करें कि क्या पथ मौजूद है या नहीं os.path.exists (पथ) मापांक
  • यदि पथ मौजूद है, तो उप-फ़ोल्डर सहित पथ में मौजूद फ़ाइलों और फ़ोल्डरों की सूची प्राप्त करें। विधि का प्रयोग करें os.walk (पथ), और यह एक जनरेटर युक्त फ़ोल्डर, फ़ाइलों और सबफ़ोल्डर्स को लौटाएगा
  • वर्तमान पथ और फ़ाइल / फ़ोल्डर नाम दोनों विधि का उपयोग करके फ़ाइल या फ़ोल्डर का पथ प्राप्त करें os.path.join ()
  • लाओ ctime वहाँ से os.stat (पथ) विधि का उपयोग करने की विधि st_ctime
  • की तुलना करें ctime समय के साथ हमने पहले गणना की है
  • यदि परिणाम उपयोगकर्ता के वांछित दिनों से अधिक है, तो जांचें कि क्या यह एक फ़ाइल या फ़ोल्डर है। यदि यह एक फ़ाइल है, का उपयोग करें os.remove (पथ) और उपयोग करें shutil.rmtree () तरीका
  • यदि पथ मौजूद नहीं है, तो संदेश नहीं मिला

आइए कोड को विस्तार से देखें.

# आवश्यक मॉड्यूल आयात करना
आयात os
आयात बंद
आयात का समय

# मुख्य कार्य
def मुख्य ():

# गिनती शुरू करना
डिलीट_फोल्डर्स_काउंट = 0
delete_files_count = 0

# पथ निर्दिष्ट करें
पथ = "/ PATH_TO_DELETE"

# दिन निर्दिष्ट करें
दिन = 30

# सेकंड में दिन परिवर्तित करना
# time.time () सेकंड में वर्तमान समय देता है
सेकंड = time.time () – (दिन * 24 * 60 * 60)

# जाँच रहा है कि फ़ाइल पथ में मौजूद है या नहीं
यदि os.path.exists (पथ):

# पथ में प्रत्येक फ़ोल्डर और फ़ाइल पर पुनरावृति
os.walk (पथ) में root_folder, फ़ोल्डर्स, फ़ाइलों के लिए:

# दिनों की तुलना करना
अगर सेकंड >= get_file_or_folder_age (root_folder):

# फ़ोल्डर को हटाना
remove_folder (root_folder)
हटाए गए_फोल्डर्स_काउंट + = 1 # इंक्रीमेंटिंग काउंट

# root_folder निकालने के बाद ब्रेकिंग
टूटना

अन्य:

# root_folder से फ़ोल्डर की जाँच
फ़ोल्डर में फ़ोल्डर के लिए:

# फ़ोल्डर की जगह
folder_path = os.path.join (root_folder, फ़ोल्डर)

# दिनों के साथ तुलना
अगर सेकंड >= get_file_or_folder_age (folder_path):

# remove_folder फ़ंक्शन का उपयोग करना
remove_folder (FOLDER_PATH)
हटाए गए_फोल्डर्स_काउंट + = 1 # इंक्रीमेंटिंग काउंट

# वर्तमान निर्देशिका फ़ाइलों की जाँच
फ़ाइलों में फ़ाइल के लिए:

# फ़ाइल पथ
file_path = os.path.join (root_folder, फ़ाइल)

# दिनों की तुलना करना
अगर सेकंड >= get_file_or_folder_age (file_path):

# remove_file फ़ंक्शन को लागू करना
remove_file (FILE_PATH)
हटाए गए_files_count + = 1 # वृद्धि गणना

अन्य:

# अगर पथ एक निर्देशिका नहीं है
# दिनों के साथ तुलना
अगर सेकंड >= get_file_or_folder_age (पाथ):

# फ़ाइल को इनवॉइस करना
remove_file (पथ)
हटाए गए_files_count + = 1 # वृद्धि गणना

अन्य:

# फ़ाइल / फ़ोल्डर नहीं मिला है
प्रिंट (च ‘"{पथ}" नहीं मिला’)
हटाए गए_files_count + = 1 # वृद्धि गणना

प्रिंट (च"कुल फ़ोल्डर हटाए गए: {हटाए गए_फोल्डर्स_काउंट}")
प्रिंट (च"कुल फ़ाइलें हटाई गईं: {delete_files_count}")

def remove_folder (पथ):

# फ़ोल्डर को हटाना
अगर बंद नहीं है। श्रीमत (पथ):

# सफलता का संदेश
प्रिंट (च"{path} को सफलतापूर्वक हटा दिया जाता है")

अन्य:

# विफलता संदेश
प्रिंट (च"{पथ} को हटाने में असमर्थ")

def remove_file (पथ):

# फाइल को हटाना
यदि नहीं os.remove (पथ):

# सफलता का संदेश
प्रिंट (च"{path} को सफलतापूर्वक हटा दिया जाता है")

अन्य:

# विफलता संदेश
प्रिंट (च"{पथ} को हटाने में असमर्थ")

def get_file_or_folder_age (पाथ):

# फ़ाइल / फ़ोल्डर का समय प्राप्त करना
# समय सेकंड में होगा
ctime = os.stat (पाथ) .st_ctime

# समय लौट रहा है
वापसी के समय

अगर __name__ == ‘__main__’:
मुख्य()

आपको आवश्यकता के आधार पर उपरोक्त कोड में निम्नलिखित दो चर को समायोजित करने की आवश्यकता है.

दिन = 30
पथ = "/ PATH_TO_DELETE"

एक्स जीबी से बड़ी फ़ाइलों को हटाना

उन फ़ाइलों की खोज करें जो एक विशेष आकार से बड़ी हैं और उन्हें हटा दें। यह उपरोक्त लिपि के समान है। पिछली स्क्रिप्ट में, हमने लिया है आयु एक पैरामीटर के रूप में, और अब हम लेंगे आकार विलोपन के लिए एक पैरामीटर के रूप में.

# ओएस मॉड्यूल का आयात
आयात os

# फ़ंक्शन जो किसी फ़ाइल का आकार देता है
def get_file_size (पथ):

# बाइट्स में फ़ाइल का आकार प्राप्त करना
आकार = os.path.getsize (पथ)

# फ़ाइल का आकार लौटाना
वापसी का आकार

# एक फ़ाइल को हटाने के लिए कार्य करते हैं
def remove_file (पथ):

# फ़ाइल हटाना
यदि नहीं os.remove (पथ):

# सफलता
प्रिंट (च"{path} सफलतापूर्वक हटा दिया गया है")

अन्य:

# त्रुटि
प्रिंट (च"{पथ} को हटाने में असमर्थ")

def मुख्य ():
# पथ निर्दिष्ट करें
पथ = "ENTER_PATH_HERE"

# MBs में फ़ाइल का अधिकतम आकार रखें
आकार = 500

# जाँच रहा है कि रास्ता मौजूद है या नहीं
यदि os.path.exists (पथ):

# बाइट्स में आकार बदलना
आकार = आकार * 1024 * 1024

# सबफ़ोल्डर्स के माध्यम से ट्रैवर्सिंग
os.walk (पथ) में root_folder, फ़ोल्डर्स, फ़ाइलों के लिए:

# फ़ाइलों की सूची पर पुनरावृति
फ़ाइलों में फ़ाइल के लिए:

# फ़ाइल पथ प्राप्त करना
file_path = os.path.join (root_folder, फ़ाइल)

# फ़ाइल का आकार जाँच रहा है
अगर get_file_size (file_path) >= आकार:
# remove_file फ़ंक्शन को लागू करना
remove_file (FILE_PATH)

अन्य:

# जाँच केवल अगर पथ फ़ाइल है
यदि os.path.isfile (पथ):
# रास्ता कोई दिर नहीं है
# सीधे फ़ाइल की जाँच
अगर get_file_size (पथ) >= आकार:
# remove_file फ़ंक्शन को लागू करना
remove_file (पथ)

अन्य:

# रास्ता मौजूद नहीं है
प्रिंट (च"{पथ} मौजूद नहीं है")

अगर __name__ == ‘__main__’:
मुख्य()

निम्नलिखित दो चर समायोजित करें.

पथ = "ENTER_PATH_HERE"
आकार = 500

एक विशिष्ट एक्सटेंशन के साथ फाइलें निकालना

एक परिदृश्य हो सकता है जहाँ आप उनके एक्सटेंशन प्रकारों द्वारा फ़ाइलों को हटाना चाहते हैं। आइए बताते हैं .log फ़ाइल हम os.path.splitext (पथ) विधि का उपयोग करके फ़ाइल का विस्तार पा सकते हैं। यह एक टपल देता है जिसमें पथ और फ़ाइल का विस्तार होता है.

# ओएस मॉड्यूल आयात करना
आयात os

# मुख्य कार्य
def मुख्य ():

# पथ निर्दिष्ट करें
पथ = "PATH_TO_LOOK_FOR"

# एक्सटेंशन निर्दिष्ट करें
विस्तार = ".लॉग"

# जाँच रहा है कि रास्ता मौजूद है या नहीं
यदि os.path.exists (पथ):

# जांचें कि रास्ता निर्देशिका है या नहीं
यदि os.path.isdir (पथ):

# सबफ़ोल्डर्स के माध्यम से पुनरावृति
os.walk (पथ) में root_folder, फ़ोल्डर्स, फ़ाइलों के लिए:

# फाइलों की जाँच
फ़ाइलों में फ़ाइल के लिए:

# फ़ाइल पथ
file_path = os.path.join (root_folder, फ़ाइल)

# फ़ाइल नाम से एक्सटेंशन निकालना
file_extension = os.path.splitext (file_path) [1]

# file_extension की जाँच कर रहा है
अगर एक्सटेंशन == file_extension:

# फ़ाइल हटाना
यदि os.remove नहीं है (file_path):

# सफलता का संदेश
प्रिंट (च"{file_path} को सफलतापूर्वक हटा दिया गया")

अन्य:

# विफलता संदेश
प्रिंट (च"{File_path} को हटाने में असमर्थ")

अन्य:

# पथ कोई निर्देशिका नहीं है
प्रिंट (च"{पथ} एक निर्देशिका नहीं है")

अन्य:

# रास्ता मौजूद नहीं है
प्रिंट (च"{पथ} मौजूद नहीं है")

अगर __name__ == ‘__main__’:
# मुख्य समारोह का आह्वान
मुख्य()

अपनी आवश्यकताओं को पूरा करने के लिए उपरोक्त कोड में पथ और विस्तार चर को अपडेट करना न भूलें.

मेरा सुझाव है कि गैर-उत्पादन वातावरण में लिपियों का परीक्षण करना। एक बार जब आप परिणामों से संतुष्ट हो जाते हैं, तो आप इसे रखरखाव के काम के लिए समय-समय पर चलाने के लिए क्रोन (यदि लिनक्स का उपयोग कर) के माध्यम से शेड्यूल कर सकते हैं। अजगर इस सामान को प्राप्त करने के लिए बहुत अच्छा है और यदि अधिक करने के लिए सीखने में दिलचस्पी है तो इसे देखें उदमी पाठ्यक्रम.

टैग:

  • अजगर

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map