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

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

मुझे यकीन नहीं है कि नौकरी के लिए पाइथन सही उपकरण है या नहीं। यह शायद बैश या पावरशेल होगा, लेकिन मैं प्रोग्रामिंग में बहुत कुशल नहीं हूं।

अगर किसी के पास यह सुझाव है कि यह कैसे करना सबसे अच्छा है तो मैं आभारी रहूंगा।

यह वह कोड है जो मेरे पास अभी एक उदाहरण के लिए है (फिर से, बहुत कुशल नहीं):

import os

filePaths = ['D:\test\remove.txt', 'F:\test\remove.txt']
         
os.remove(filePaths)
print("% s has been removed" % filePaths)

यह मुझे बताते हुए एक त्रुटि देता है:

TypeError: remove: path should be string, bytes or os.PathLike, not list

क्या मुझे प्रत्येक पथ और फ़ाइल के लिए एक चर बनाना होगा?

1
Solaire 28 अक्टूबर 2020, 03:42

2 जवाब

सबसे बढ़िया उत्तर

आप हटाए जाने के लिए सूची के माध्यम से लूप कर सकते हैं।

import os

filePaths = ['D:/test/remove.txt', 'F:/test/remove.txt']
for filePath in filePaths:
    try: 
        print(f"removing {filePath}")        
        os.remove(filePath)
    except OSError as e:
        print(f"Failed, {e}")

बैकस्लैश से सावधान रहें, "\t" टैब कैरेक्टर है। ये सब काम करेंगे

"D:\\test\\remove.txt"
r"D:\test\remove.txt"
"D:/test/remove.txt"
1
tdelaney 28 अक्टूबर 2020, 04:16

पावरशेल में:

$FilePaths =
@(
    'D:\test\remove.txt'
    'F:\test\remove.txt'
)

$FilesPaths | Remove-Item
1
Steven 28 अक्टूबर 2020, 04:20