क्या मैं फ़ाइल नाम में सभी रिक्त स्थानों को आयात करने के लिए बाहर ले जाता हूं, या import
कहने का कोई तरीका है कि रिक्त स्थान हैं?आप नाम में रिक्त स्थान के साथ अजगर में फ़ाइल कैसे आयात करते हैं?
उत्तर
आपको फ़ाइल नाम से रिक्त स्थान लेना चाहिए। चूंकि फ़ाइल नाम का आयात आयातित मॉड्यूल के लिए पहचानकर्ता के रूप में किया जाता है (यानी foo.py
को foo
के रूप में आयात किया जाएगा) और पायथन पहचानकर्ताओं में रिक्त स्थान नहीं हो सकते हैं, यह import
कथन द्वारा समर्थित नहीं है।
foo_bar = __import__("foo bar")
यह foo_bar
रूप foo bar.py
आयात करेगा:
आप वास्तव में किसी कारण से ऐसा करने की जरूरत है, तो आप __import__
फ़ंक्शन का उपयोग कर सकते हैं। यह import
कथन से थोड़ा अलग व्यवहार करता है और आपको इससे बचना चाहिए।
आप from foo_bar import *
की तरह कुछ करना चाहते हैं (लेकिन एक अंडरस्कोर के बजाय एक स्थान के साथ), आप execfile (डॉक्स here) का उपयोग कर सकते हैं:
execfile("foo bar.py")
हालांकि यह स्रोत फ़ाइल नाम में स्पेस न बेहतर अभ्यास है ।
आप importlib.import_module
फ़ंक्शन का भी उपयोग कर सकते हैं, जो __import__
के आसपास एक रैपर है।
foo_bar_mod = importlib.import_module("foo bar")
या
foo_bar_mod = importlib.import_module("path.to.foo bar")
और जानकारी: https://docs.python.org/2/library/importlib.html
आप कुछ कोड दिखाया जा सका कृपया? आम तौर पर फ़ाइल नामों में रिक्त स्थान के साथ पायथन को कोई समस्या नहीं है। (ओह रुको, जब तक कि आप 'आयात' कथन के बारे में बात नहीं कर रहे हैं, इस स्थिति में पाइथन मॉड्यूल नामों में रिक्त स्थान का समर्थन नहीं करता है।) –