2016-02-06 5 views
14

के गुणों की ऑर्डर की गई सूची प्राप्त करें मुझे पाइथन मॉड्यूल के गुणों की सूची पुनर्प्राप्त करने की आवश्यकता है।पाइथन मॉड्यूल

पकड़, और यह वह जगह है जहां यह प्रश्न अलग है उदा। this one से, यह है कि मैं मॉड्यूल में दिखाई देने वाले आदेश के अनुसार सूची आदेश देना चाहता हूं।

उदाहरण के लिए, मॉड्यूल

# a_module.py 
b1 = 1 
a0 = 1 
a1 = 2 

मैं सूची ['b1', 'a0', 'a1'] पर विचार करें।

मैं क्या कोशिश की है:

>>> import a_module 
>>> dir(a) 
[..., 'a0', 'a1', 'b1'] 

>>> from inspect import getmembers 
>>> [x[0] for x in getmembers(a_module)] 
[..., 'a0', 'a1', 'b1'] 

वहाँ फ़ाइल को पार्स करने के बिना सूची होने का कोई रास्ता नहीं है?

उत्तर

4

पर एक नज़र डालें, हां, आपको फ़ाइल को पार्स करना होगा। हालांकि आपको अपना खुद का पार्सर लिखना नहीं है, आप ast libary का उपयोग कर सकते हैं।

अपने उदाहरण फ़ाइल

# a_module.py 
b1 = 1 
a0 = 1 
a1 = 2 

आप इस तरह से विशेषताओं को पार्स सकता है का उपयोग करना।

import ast 

members = [] 
with open('file.py', 'r') as f: 
    src = f.read() 

tree = ast.parse(src) 

for child in tree.body: 
    if isinstance(child, ast.Assign): 
     for target in child.targets: 
      members.append(target.id) 

print members 
# ['b1', 'a0', 'a1'] 

यह छोटी स्क्रिप्ट केवल शीर्ष-स्तरीय विशेषताओं को देखती है। यह आयात और कक्षा और कार्य परिभाषा जैसी चीजों को अनदेखा कर रहा है। पार्स की गई फ़ाइल से आप कितनी जानकारी निकालना चाहते हैं, इस पर निर्भर करते हुए आपके पास अधिक जटिल तर्क हो सकता है।

0

फ़ाइल को पार्स किए बिना कोई रास्ता नहीं है।

विशेषता आदेश तब तक प्रोग्रामिंग के लिए कोई फर्क नहीं पड़ता जब तक कि आप दस्तावेज़ का प्रयास नहीं कर रहे हों। यदि आपका मामला http://www.sphinx-doc.org/

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