2009-10-10 16 views
23

मैं (पायथनिक रूप से) कैसे जांच सकता हूं कि कोई पैरामीटर पाइथन मॉड्यूल है या नहीं? मॉड्यूल या पैकेज की तरह कोई प्रकार नहीं है। करने के लिएजांचें कि कोई पैरामीटर पाइथन मॉड्यूल है या नहीं?

>>> type(os) 
<type 'module'>  

लेकिन क्या मैं इसे तुलना करते हैं:

>>> os 
<module 'os' from '/usr/lib/python2.6/os.pyc'> 

>>> isinstance(os, module) 
Traceback (most recent call last): 
    File "/usr/lib/gedit-2/plugins/pythonconsole/console.py", line 290, in __run 
    r = eval(command, self.namespace, self.namespace) 
    File "<string>", line 1, in <module> 
NameError: name 'module' is not defined 

मैं यह कर सकता है? ।

def gethelp(module, sstring): 

    # here i need to check if module is a module. 

    for func in listseek(dir(module), sstring): 
     help(module.__dict__[func]) 
बेशक

, इस वसीयत: :(

मैं जल्दी से मॉड्यूल में तरीकों को खोजने और उनके लिए मदद ग्रंथों प्राप्त करने के लिए एक सरल मॉड्यूल बनाया है मैं एक मॉड्यूल वर और एक स्ट्रिंग मेरी विधि की आपूर्ति काम भले ही मॉड्यूल = 'एबीसी': तो dir ('एबीसी') मेरे स्ट्रिंग वस्तु के लिए विधि की सूची दे देंगे, लेकिन मुझे लगता है कि जरूरत नहीं है

+0

आप मदद() विधि और पायडोक और इसी तरह के प्रयासों से अवगत हैं, है ना? –

+0

पायडॉक थोड़ा अलग है। मुझे सही नाम जानने के बिना एक विधि खोजने के लिए एक आसान तरीका चाहिए। उदाहरण के लिए, os.path में 'आकार' वाला कुछ है। –

+0

क्या आप बतख को मॉड्यूल टाइप नहीं कर सकते? आपको ये किस लिए चाहिए? बस कोशिश करें और अगर यह विफल हो जाता है तो अपवाद पकड़ो। – u0b34a0f6ae

उत्तर

50
from types import ModuleType 

isinstance(obj, ModuleType) 
+0

कृपया इसे कोड के रूप में चिह्नित करने के लिए इंडेंट का उपयोग करें। +1 हालांकि, यह नहीं पता था। –

+3

हां! इस पर किसने दिया?! लोग मजाकिया हैं। –

+0

आपने जो कुछ भी पहले कहा था, मैंने अभी दोहराया है, और मेरा जवाब यह पूरा सुझाव था कि यह कोड पाइथनिक क्यों है। असल में मुझे आपके जवाब के खिलाफ वोट नहीं देना चाहिए, क्षमा करें। –

4

इसमें कुछ समय hacky लगता है, लेकिन:।

>>> import sys 
>>> import os 
>>> type(os) is type(sys) 
True 
+0

हां, यह काफी साफ नहीं है। –

+7

हेहे, मानक लाइब्रेरी में, मॉड्यूल 'टाइप' में, यह पाया गया:' मॉड्यूल टाइप = प्रकार (sys) ':) – kolypto

25
>>> import inspect, os 
>>> inspect.ismodule(os) 
True 
संबंधित मुद्दे