मैं एक पायथन स्क्रिप्ट को अलर्ट करने का एक तरीका समझना चाहता हूं कि एक फ़ाइल प्रतिलिपि बनाई गई है।पाइथन में फ़ाइल की प्रतिलिपि बनाई जाने पर आप कैसे जांचते हैं?
एक फ़ोल्डर
to_print
लगातारos.listdir()
साथ मतदान से स्क्रिप्ट के द्वारा देखा जा रहा है: यहाँ परिदृश्य है।हर बार
os.listdir()
फ़ाइलों की एक सूची देता है जिसमें एक फ़ाइल मौजूद है जो पहले नहीं देखी गई है, लिपि उस फ़ाइल पर कुछ संचालन करती है, जिसमें इसे खोलना और इसकी सामग्री में हेरफेर करना शामिल है।
यह जब फ़ाइल छोटा है, और निर्देशिका के लिए अपनी मूल स्रोत से फ़ाइल की प्रतिलिपि बनाते देखा जा रहा os.listdir()
द्वारा अगले चुनाव तक लगने वाले समय का कम से कम समय लगता है ठीक है। हालांकि, अगर एक फ़ाइल को पराजित और पाया जाता है, लेकिन यह अभी भी कॉपी होने की प्रक्रिया में है, तो जब फ़ाइल स्क्रिप्ट पर कार्य करने की कोशिश करता है तो फ़ाइल सामग्री दूषित होती है।
इसके बजाय, मैं (os.stat
या अन्यथा) का उपयोग करने में सक्षम होना चाहता हूं) पता है कि वर्तमान में एक फ़ाइल की प्रतिलिपि बनाई जा रही है, और जब तक मैं ऐसा नहीं करता तब तक इसे करने के लिए प्रतीक्षा करें।
मेरा वर्तमान विचार os.stat()
का उपयोग हर बार जब मुझे एक नई फ़ाइल मिलती है, तो अगले चुनाव तक प्रतीक्षा करें और आखिरी बार मतदान के बाद से संशोधित/निर्मित समय की तारीख की तुलना करें, और यदि वे वही रहते हैं तो वह फ़ाइल है "स्थिर", अन्यथा मतदान होने तक मतदान जारी रखें। मुझे यकीन नहीं है कि यह काम करेगा हालांकि मैं इस बात से परिचित नहीं हूं कि लिनक्स/यूनिक्स इन मानों को कैसे अपडेट करता है।
यह अगर वहाँ पर कार्रवाई करने के लिए कोई फ़ाइल कर रहे हैं और निर्देशिका खाली है काम नहीं करेगा। – emish
@emish, क्यों नहीं? 'Newfiles' सिर्फ खाली सूची नहीं होगी, और निश्चित रूप से 'प्रक्रिया' एक खाली सूची को समझदारी से संभाल सकता है। (यदि यह नहीं कर सकता है, तो इसे समायोजित किया जाना चाहिए ताकि यह कर सके।) – huon
@kindall मेरी माफ़ी। जब तक मैंने कोशिश नहीं की तब तक मुझे अंतर का एहसास नहीं हुआ। धन्यवाद, यह बिल्कुल छोटा हैक मुझे चाहिए! – emish