यदि आप हाथ से पहले नहीं जानते हैं कि कौन सी फाइलें हैं, तो आपको एक सूची प्राप्त करने की आवश्यकता होगी, फिर सूची में एक यादृच्छिक अनुक्रमणिका चुनें।
import os
import random
def getRandomFile(path):
"""
Returns a random filename, chosen among the files of the given path.
"""
files = os.listdir(path)
index = random.randrange(0, len(files))
return files[index]
संपादित:
यहाँ एक प्रयास है सवाल अब एक "रेस स्थिति" है, जो मैं केवल यह मान सकते हैं फ़ाइलों की विशिष्ट समस्या जोड़ा जा रहा है/हटा दिया है, जबकि आप कर रहे हैं का डर का उल्लेख है एक यादृच्छिक फ़ाइल लेने की कोशिश की प्रक्रिया में।
मुझे विश्वास नहीं है कि इसके आस-पास एक रास्ता है, यह ध्यान में रखते हुए कि कोई I/O ऑपरेशन स्वाभाविक रूप से "असुरक्षित" है, यानी यह असफल हो सकता है। तो, एल्गोरिथ्म एक दिया निर्देशिका में अनियमित रूप से चुने फ़ाइल खोलने के लिए चाहिए:
- असल
open()
फ़ाइल का चयन किया है, और एक विफलता संभाल, के बाद से फ़ाइल अब वहां नहीं
- हो सकता है शायद एक सेट के लिए खुद को सीमित कोशिश करता की संख्या, तो यह अगर निर्देशिका खाली है या मरता नहीं है फ़ाइलों में से कोई भी पठनीय
क्षमा दोस्तों, मैं गलती से इससे पहले कि मैं मेरे सवाल में प्रवेश समाप्त प्रस्तुत की। हालांकि बहुत कुछ नहीं बदला जाना चाहिए। – JasonSmith
क्या आप दौड़-स्थिति समस्या को स्पष्ट कर सकते हैं? मुझे लगता है कि आप किसी फ़ाइल को चुनने और खोलने का मतलब नहीं लेते हैं (जब कोई इसे उदाहरण के लिए खोलने और खोलने की कोशिश करने के बीच इसे हटा सकता है), लेकिन यह स्पष्ट रूप से यह कहने लायक हो सकता है (मान लीजिए कि मैं आपको सही तरीके से व्याख्या कर रहा हूं)। – Brian
दौड़ की स्थिति है क्योंकि कई प्रक्रियाएं एक साथ ऐसा कर रही हैं? या दौड़ की स्थिति तब होगी जब एक लेखक फाइलें बना रहा है और यह पाठक जो उन्हें चुन रहा है? –