2012-02-03 8 views
23

क्या मैं फ़ाइल नाम में सभी रिक्त स्थानों को आयात करने के लिए बाहर ले जाता हूं, या import कहने का कोई तरीका है कि रिक्त स्थान हैं?आप नाम में रिक्त स्थान के साथ अजगर में फ़ाइल कैसे आयात करते हैं?

+0

आप कुछ कोड दिखाया जा सका कृपया? आम तौर पर फ़ाइल नामों में रिक्त स्थान के साथ पायथन को कोई समस्या नहीं है। (ओह रुको, जब तक कि आप 'आयात' कथन के बारे में बात नहीं कर रहे हैं, इस स्थिति में पाइथन मॉड्यूल नामों में रिक्त स्थान का समर्थन नहीं करता है।) –

उत्तर

29

आपको फ़ाइल नाम से रिक्त स्थान लेना चाहिए। चूंकि फ़ाइल नाम का आयात आयातित मॉड्यूल के लिए पहचानकर्ता के रूप में किया जाता है (यानी foo.py को foo के रूप में आयात किया जाएगा) और पायथन पहचानकर्ताओं में रिक्त स्थान नहीं हो सकते हैं, यह import कथन द्वारा समर्थित नहीं है।

foo_bar = __import__("foo bar") 

यह foo_bar रूप foo bar.py आयात करेगा:

आप वास्तव में किसी कारण से ऐसा करने की जरूरत है, तो आप __import__ फ़ंक्शन का उपयोग कर सकते हैं। यह import कथन से थोड़ा अलग व्यवहार करता है और आपको इससे बचना चाहिए।

7

आप from foo_bar import * की तरह कुछ करना चाहते हैं (लेकिन एक अंडरस्कोर के बजाय एक स्थान के साथ), आप execfile (डॉक्स here) का उपयोग कर सकते हैं:

execfile("foo bar.py") 

हालांकि यह स्रोत फ़ाइल नाम में स्पेस न बेहतर अभ्यास है ।

0

आप 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

संबंधित मुद्दे