क्या किसी फ़ोल्डर में सभी .py फ़ाइलों को आयात करने और चलाने का कोई तरीका है?

मूल रूप से मुझे लगता है कि पाइस्टेस्ट अपनी परीक्षण खोज कैसे करता है।

ऐसा लगता है कि मैं एक फ़ाइल पथ से एक सूची में आयात करना चाहता हूं और फिर प्रत्येक मॉड्यूल पर .main(*args) को कॉल करने वाली सूची के माध्यम से पुन: प्रयास करना चाहता हूं।

यह भी अजगर 2 और 3 संगत होना चाहिए

उदाहरण

  • start.py
  • चीज़ें/
    • mod1.py <उल>
    • मुख्य(*args):
  • mod2.py <उल>
  • मुख्य(*args):
1
Ryan Bambrough 24 मई 2018, 20:23

1 उत्तर

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

आप importlib का उपयोग कर सकते हैं। निम्नलिखित सरल निर्देशिका संरचना मान लें:

  • a.py
  • बी.पी.वाई
  • c.py

a.py और b.py में निम्नलिखित सरल कार्य हैं:

def main(name):
    print name

c.py में हम अपनी निर्देशिका पर पुनरावृति कर सकते हैं और प्रत्येक फ़ाइल को आयात करने के लिए importlib.import_module का उपयोग कर सकते हैं। हमें आयातित मॉड्यूल को विश्व स्तर पर सुलभ बनाना सुनिश्चित करना चाहिए, अन्यथा वे केवल लूप के लिए स्थानीय होंगे।

c.py:

import importlib

files = ['a', 'b']

for f in files:
    globals()[f] = importlib.import_module(f)

a.main('adam')
b.main('ben') 

c.py चलाने से निम्न आउटपुट उत्पन्न होता है:

adam
ben
2
amitchone 24 मई 2018, 21:28