পাইথনে প্রোপার্টি ফাইল (জাভা প্রোপার্টি-এর সমান)


137

প্রদত্ত নিম্নলিখিত বিন্যাসে ( .properties বা .ini ):

propertyName1=propertyValue1
propertyName2=propertyValue2
...
propertyNameN=propertyValueN

জন্য জাভা নেই প্রোপার্টি বর্গ যে উপরোক্ত ফর্ম্যাটের সাথে পার্স / যোগাযোগ করার জন্য অফার কার্যকারিতা।

কিছু অনুরূপ পাইথন 's মান লাইব্রেরী (2.x)?

যদি তা না হয় তবে আমার আর কী বিকল্প আছে?


5
এটি জাভা প্রশ্ন নয়। আপনি জাভা ট্যাগ অপসারণটি কেন রোলব্যাক করলেন?
বালুসসি

উত্তর:


69

.Ini ফাইলগুলির জন্য কনফিগার পার্সার মডিউল রয়েছে যা .ini ফাইলগুলির সাথে সামঞ্জস্যপূর্ণ ফর্ম্যাট সরবরাহ করে।

যাইহোক, সম্পূর্ণ .poperties ফাইল পার্সিংয়ের জন্য কিছুই উপলব্ধ নেই, যখন আমাকে এমন করতে হবে যে আমি কেবল জাইথন ​​ব্যবহার করি (আমি স্ক্রিপ্টিংয়ের কথা বলছি)।


10
: pyjavaproperties একটি বিকল্প হতে আপনার Jython ব্যবহার করতে না চান তাহলে মনে হয় bitbucket.org/jnoller/pyjavaproperties
হান্স-ক্রিস্টোফ স্টেনার

2
জাভা বৈশিষ্ট্য ফাইল .ini ফাইলের সমতুল্য নয়। pyjavaproperties সঠিক উত্তর
IGI

2
অ্যালেক্স Matelli এখানে ConfigParser সঙ্গে .properties ফাইল বিশ্লেষণ করতে একটি সহজ উপায় প্রস্তাব stackoverflow.com/a/2819788/15274
Pi।

বিটবুককেট.আর.জি.নল্লার / পিজিভাপ্রোপার্টিগুলি ২০১০ সাল থেকে বজায় রাখা হয়নি It এটি পাইথন ৩ এর সাথে সামঞ্জস্যপূর্ণ নয় I আমি @pi দ্বারা লিঙ্কযুক্ত সমাধানগুলি ব্যবহার করব।
কোডিজু

যেহেতু এখানে এটি উল্লেখ করা হয়নি, আমাকে আবার যুক্ত করুন যে এটি এক নয়। আমি জাভা বা পাই 3 এর জন্য কথা বলতে পারি না এবং সম্ভবত এটি সরল কী / মানগুলির জন্য কাজ করে। তবে স্ট্রিং ইন্টারপোলেশনের সিনট্যাক্সটি আলাদা। এই দ্রবণটি পাইথন ফর্ম্যাটিং প্রদান করে, যেমন। % (স্ট্রিং) এর সময় (যেমন পিঁপড়া) আমি $ {স্ট্রিং use ব্যবহার করব} pymotw.com/2/ConfigParser
মাইপ

74

আমি এটির সাথে কাজ করতে সক্ষম হয়েছি ConfigParser, এটি কীভাবে করা যায় সে সম্পর্কে কেউ উদাহরণ দেয় নি, সুতরাং এখানে একটি সম্পত্তি ফাইলের একটি সাধারণ অজগর পাঠক এবং সম্পত্তি ফাইলের উদাহরণ। নোট করুন যে এক্সটেনশানটি এখনও রয়েছে .properties, তবে আপনি .ini ফাইলগুলিতে যা দেখেন তার মতোই একটি বিভাগ শিরোনাম যোগ করতে হয়েছিল ... কিছুটা জারজকরণ, তবে এটি কার্যকর হয় works

পাইথন ফাইল: PythonPropertyReader.py

#!/usr/bin/python    
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('ConfigFile.properties')

print config.get('DatabaseSection', 'database.dbname');

সম্পত্তি ফাইল: ConfigFile.properties

[DatabaseSection]
database.dbname=unitTest
database.user=root
database.password=

আরও কার্যকারিতা জন্য, পড়ুন: https://docs.python.org/2/library/configparser.html


5
কনফিগার পার্সার মডিউলটি পাইথন 3
কনফিগারপার্সার

এটি .ini ফাইলগুলির জন্য, প্রাইপার্টি ফাইলগুলির জন্য নয় কারণ সেগুলিতে বিভাগ থাকে না এবং কনফিগার পার্সার ব্যর্থ হয় যদি এটি কোনও বিভাগ শিরোনাম খুঁজে না পায়। তদুপরি, আইএনআই ফাইলগুলিতে বিভাগগুলি অন্তর্ভুক্ত নাও থাকতে পারে তাই এই কনফিগারপার্সারটি মোটেই নির্ভরযোগ্য বলে মনে হচ্ছে না
BiAiB

65

একটি জাভা বৈশিষ্ট্য ফাইলটি প্রায়শই বৈধ পাইথন কোডও হয়। আপনি আপনার myconfig.properties ফাইলটির নাম myconfig.py এ রাখতে পারেন। তারপরে এইভাবে আপনার ফাইলটি আমদানি করুন

import myconfig

এবং সরাসরি সম্পত্তি অ্যাক্সেস

print myconfig.propertyName1

11
আমি ধারণাটি পছন্দ করি, তবে এটি এমন বৈশিষ্ট্যগুলির জন্য কাজ করে না যা বিন্দুগুলি ধারণ করে, অর্থাত্ prop.name="val"এই ক্ষেত্রে কাজ করে না।
ম্যাকজাকোব

36
A java properties file is valid python code: আমার পার্থক্য আছে। কিছু জাভা সম্পত্তি ফাইল বৈধ পাইথন কোডের জন্য পাস করবে, তবে অবশ্যই সমস্ত নয়। যেমন @ মিমজেজে বলেছেন যে বিন্দুগুলি একটি সমস্যা। আনকোটেড আক্ষরিক স্ট্রিং হয়। -1।
মনোজ গোবিন্দন

24
একটি বরং খারাপ ধারণা ... যেহেতু এটি ভেঙে গেছে। জাভা প্রোপ ফাইলগুলি ":" এর পরিবর্তে ":" অনুমতি দেয়; তারা লাইন-ধারাবাহিকতার পরে সাদা স্থান খায়; তারা স্ট্রিং উদ্ধৃতি না। এর কোনওটিই "বৈধ পাইথন" নয়।
ড্যান এইচ

2
জাভা সম্পত্তি ফাইলগুলি সাধারণত বৈধ অজগর কোডের জন্য পাস করে না। একটি বিকল্প হ'ল অজগর ফাইলে আপনার সম্পত্তি সেট করা এবং বৈধ অজগর ব্যবহার করা (যেমন: MEDIA_ROOT = '/ foo') ...
ড্যানগ্রগ্রি

3
এটি সেরা এড়ানো একটি হ্যাক। যখন আপনার সম্পত্তি পরিবর্তন হবে এবং ফাইলটি আর অজগর নয় তখন আপনার খারাপ দিন হবে bad
r_2

59

আমি জানি যে এটি একটি খুব পুরানো প্রশ্ন, তবে আমার এখনই এটির প্রয়োজন এবং আমি আমার নিজস্ব সমাধান, একটি খাঁটি অজগর সমাধানটি প্রয়োগ করার সিদ্ধান্ত নিয়েছি, যা বেশিরভাগ ব্যবহারের ক্ষেত্রে আবশ্যক (সমস্ত নয়):

def load_properties(filepath, sep='=', comment_char='#'):
    """
    Read the file passed as parameter as a properties file.
    """
    props = {}
    with open(filepath, "rt") as f:
        for line in f:
            l = line.strip()
            if l and not l.startswith(comment_char):
                key_value = l.split(sep)
                key = key_value[0].strip()
                value = sep.join(key_value[1:]).strip().strip('"') 
                props[key] = value 
    return props

sepফর্ম্যাট সহ ফাইলগুলি পার্স করতে আপনি ':' এ পরিবর্তন করতে পারেন :

key : value

কোডটি সঠিকভাবে লাইনকে পার্স করে:

url = "http://my-host.com"
name = Paul = Pablo
# This comment line will be ignored

আপনি এর সাথে একটি ডিক পাবেন:

{"url": "http://my-host.com", "name": "Paul = Pablo" }

1
শীর্ষ খাঁজ সমাধান এবং ঠিক আমি যা খুঁজছিলাম তা হ'ল!
রাসেল

নোট করুন যে এটি এন্ট্রি পছন্দ করে একই লাইনে মন্তব্য সমর্থন করে না foo = "bar" # bat
টমাস ডাব্লু

1
@ থমাসডাব্লু যদি আমরা জাভাটিকে ডি-ফ্যাক্টো স্ট্যান্ডার্ড হিসাবে ব্যবহার করি তবে সম্পত্তি # লোড এটিকে fooমান সহ একটি সম্পত্তি হিসাবে বিবেচনা করবে "bar" # bat
Bonh

1
আপনি ভেবেছিলেন একটি পুরানো প্রশ্নের উত্তর পোস্ট করার অর্থ কী? মুল বক্তব্যটি হ'ল আমি নিজেই এটি প্রয়োগ করার পরিবর্তে আমার একটি অ্যাজুর পাইপলাইনে এটি কেবল অনুলিপি করে সময় সাশ্রয় করতে সক্ষম হয়েছি। তাই ধন্যবাদ :)
পুরানো-সন্ন্যাসী

1
উত্তরটি পছন্দ! আমি ইনলাইন মন্তব্যগুলি হ্যান্ডেল করার জন্য কেবলমাত্র পরিবর্তনটি পরিবর্তন l = line.strip()করতে হয়েছিল l = line.split(comment_char)[0].strip()এবং তারপরে কেবল lতার সাথে পরবর্তী লাইনে কোনও মান আছে কিনা তা পরীক্ষা করে দেখি if l:
বেন ডালিং

17

আপনার কাছে ফাইল ফর্ম্যাটগুলির একটি বিকল্প থাকলে আমি .ini এবং পাইথনের কনফিগারেশন পার্সারটি উল্লিখিত হিসাবে ব্যবহার করার পরামর্শ দিই। আপনার যদি জাভা .properties ফাইলগুলির সাথে সামঞ্জস্যতার প্রয়োজন হয় আমি এর জন্য একটি লাইব্রেরি লিখেছি যার নাম jprop । আমরা পাইজাব্রোপার্টি ব্যবহার করছিলাম, তবে বিভিন্ন সীমাবদ্ধতার মুখোমুখি হওয়ার পরে আমি নিজের প্রয়োগটি শেষ করেছি। এটি ইউনিকোড সমর্থন এবং এস্কেপ সিকোয়েন্সগুলির জন্য আরও ভাল সমর্থন সহ .properties বিন্যাসের সম্পূর্ণ সমর্থন রয়েছে। জাইপ্রোপগুলি যে কোনও ফাইল-জাতীয় বস্তুকে পার্স করতে পারে যখন পাইজভাপ্রপ্রেটিস কেবলমাত্র ডিস্কে আসল ফাইলগুলির সাথে কাজ করে।


1
আমি এই চেষ্টা করেছিলাম। একটি যাদুমন্ত্র মত কাজ করে. ম্যাটগুডের জন্য +1!
ড্যান এইচ

1
আপনি যদি পাইপ ইনস্টল করেন এবং একটি কোড উদাহরণ যুক্ত করেন তবে আপনার উত্তরটি আরও ভাল পাইপ ইনস্টল হবে jprop, খোলার (পাথ) হিসাবে এফপি হিসাবে: বৈশিষ্ট্য = jprop.load_properties (fp) মুদ্রণ (বৈশিষ্ট্য)
রাবার হাঁস

10

আপনার যদি মাল্টি লাইন বৈশিষ্ট্য এবং খুব সাধারণ প্রয়োজন না থাকে তবে কয়েকটি লাইনের কোড আপনার জন্য এটি সমাধান করতে পারে:

ফাইল t.properties:

a=b
c=d
e=f

পাইথন কোড:

with open("t.properties") as f:
    l = [line.split("=") for line in f.readlines()]
    d = {key.strip(): value.strip() for key, value in l}

6

এটি হুবহু বৈশিষ্ট্য নয় তবে পাইথনের কনফিগারেশন ফাইলগুলি পার্স করার জন্য একটি দুর্দান্ত গ্রন্থাগার রয়েছে । এছাড়াও এই রেসিপিটি দেখুন: java.util.Properties জন্য একটি অজগর প্রতিস্থাপন


1
দ্বিতীয় লিঙ্কের জন্য ... এটি আর সক্রিয়ভাবে বিকশিত হয় না। জেসি নোলার এই রেসিপিটি থেকে কিছু প্রকল্প এখানে উপলভ্য নয় এমন একটি প্রকল্প তৈরি করেছেন। লেখক এই রেসিপিটি ব্যবহার করে যে কাউকে সেই প্রকল্পের পরামর্শ দিয়েছেন। pypi.python.org/pypi/pyjavaproperties
বড় আল

4

এখানে আমার প্রকল্পের লিঙ্ক: https://sourceforge.net/projects/pyproperties/ । এটি একটি লাইব্রেরি যা পাইথন 3.x এর জন্য * .properties ফাইলের সাথে কাজ করার পদ্ধতিগুলি with

তবে এটি java.util.Properties উপর ভিত্তি করে নয়


3

এটি java.util.Propeties এর এক থেকে এক প্রতিস্থাপন

ডক থেকে:

  def __parse(self, lines):
        """ Parse a list of lines and create
        an internal property dictionary """

        # Every line in the file must consist of either a comment
        # or a key-value pair. A key-value pair is a line consisting
        # of a key which is a combination of non-white space characters
        # The separator character between key-value pairs is a '=',
        # ':' or a whitespace character not including the newline.
        # If the '=' or ':' characters are found, in the line, even
        # keys containing whitespace chars are allowed.

        # A line with only a key according to the rules above is also
        # fine. In such case, the value is considered as the empty string.
        # In order to include characters '=' or ':' in a key or value,
        # they have to be properly escaped using the backslash character.

        # Some examples of valid key-value pairs:
        #
        # key     value
        # key=value
        # key:value
        # key     value1,value2,value3
        # key     value1,value2,value3 \
        #         value4, value5
        # key
        # This key= this value
        # key = value1 value2 value3

        # Any line that starts with a '#' is considerered a comment
        # and skipped. Also any trailing or preceding whitespaces
        # are removed from the key/value.

        # This is a line parser. It parses the
        # contents like by line.

3

আপনি ConfigParser.RawConfigParser.readfpএখানে সংজ্ঞায়িত -> https://docs.python.org/2/library/configparser.html#ConfigParser.RawConfigParser.readfp এ ফাইল-জাতীয় অবজেক্ট ব্যবহার করতে পারেন

এমন কোনও শ্রেণীর সংজ্ঞা দিন যা readlineআপনার সম্পত্তি ফাইলের প্রকৃত বিষয়বস্তুর আগে একটি বিভাগের নাম যুক্ত করে ওভাররাইড করে।

আমি এটি ক্লাসে প্যাকেজ করেছি যা dictসংজ্ঞায়িত সমস্ত বৈশিষ্ট্যের একটি প্রদান করে।

import ConfigParser

class PropertiesReader(object):

    def __init__(self, properties_file_name):
        self.name = properties_file_name
        self.main_section = 'main'

        # Add dummy section on top
        self.lines = [ '[%s]\n' % self.main_section ]

        with open(properties_file_name) as f:
            self.lines.extend(f.readlines())

        # This makes sure that iterator in readfp stops
        self.lines.append('')

    def readline(self):
        return self.lines.pop(0)

    def read_properties(self):
        config = ConfigParser.RawConfigParser()

        # Without next line the property names will be lowercased
        config.optionxform = str

        config.readfp(self)
        return dict(config.items(self.main_section))

if __name__ == '__main__':
    print PropertiesReader('/path/to/file.properties').read_properties()

3

আমি এটি ব্যবহার করেছি, এই গ্রন্থাগারটি খুব দরকারী

from pyjavaproperties import Properties
p = Properties()
p.load(open('test.properties'))
p.list()
print(p)
print(p.items())
print(p['name3'])
p['name3'] = 'changed = value'

2

এটি আমার প্রোজেক্টে আমি যা করছি: আমি প্রোপার্টি.পি নামে একটি আর .py ফাইল তৈরি করি যার মধ্যে আমি প্রকল্পে ব্যবহৃত সমস্ত সাধারণ ভেরিয়েবল / বৈশিষ্ট্য অন্তর্ভুক্ত করি এবং যে কোনও ফাইলের মধ্যে এই ভেরিয়েবলগুলি উল্লেখ করা দরকার,

from properties import *(or anything you need)

যখন আমি ঘন ঘন ডে লোকেশন পরিবর্তন করছিলাম এবং কিছু সাধারণ ভেরিয়েবল স্থানীয় পরিবেশের সাথে তুলনামূলকভাবে তখন এসএনএন শান্তি বজায় রাখতে এই পদ্ধতিটি ব্যবহার করুন। আমার পক্ষে ভাল কাজ করে তবে নিশ্চিত নয় যে এই পদ্ধতিটি ফর্মাল দেব পরিবেশ ইত্যাদির জন্য প্রস্তাবিত হবে etc.


2
import json
f=open('test.json')
x=json.load(f)
f.close()
print(x)

পরীক্ষা.জসনের সামগ্রীসমূহ: {"হোস্ট": "127.0.0.1", "ব্যবহারকারী": "জেএমএস"}


2

আমি একটি পাইথন মডিউল তৈরি করেছি যা জাভা সম্পর্কিত প্রোপার্টি ক্লাসের সাথে প্রায় একই রকম (আসলে এটি বসন্তের প্রপার্টিপ্লেসোল্ডার কনফিগারারের মতো যা আপনাকে ইতিমধ্যে সংজ্ঞায়িত সম্পত্তিটি উল্লেখ করতে {{পরিবর্তনশীল-রেফারেন্স use ব্যবহার করতে দেয়)

সম্পাদনা: আপনি কমান্ডটি চালিয়ে এই প্যাকেজটি ইনস্টল করতে পারেন (বর্তমানে অজগর 3 এর জন্য পরীক্ষা করা হয়েছে)।
pip install property

প্রকল্পটি গিটহাবে হোস্ট করা হয়েছে

উদাহরণ: (বিস্তারিত ডকুমেন্টেশন এখানে পাওয়া যাবে )

আসুন ধরা যাক আপনার my_file.properties ফাইলটিতে নিম্নলিখিত বৈশিষ্ট্যগুলি সংজ্ঞায়িত করা আছে

foo = I am awesome
bar = ${chocolate}-bar
chocolate = fudge

উপরের বৈশিষ্ট্যগুলি লোড করার কোড

from properties.p import Property

prop = Property()
# Simply load it into a dictionary
dic_prop = prop.load_property_files('my_file.properties')

আসুন ধরা যাক আপনার my_file.properties ফাইল foo = আমি ভয়ঙ্কর বার = $ {চকোলেট bar -বার চকোলেট = ফজ কোডের উপরের বৈশিষ্ট্যগুলি লোড করার জন্য কোডটি প্রোপ সম্পত্তি () প্রোপলোড ('পাথ / টু / মাই_ফাইলে) সংজ্ঞায়িত করেছি .properties ') prop.get (' foo ') # আমি দুর্দান্ত প্রোপাগেট (' বার ') # ফজ-বার
আনন্দ জোশী

সম্পন্ন . আশা করি এটি সহায়তা করে
আনন্দ জোশী

2

আপনার যদি প্রপার্টি ফাইলে একটি বিভাগ থেকে সমস্ত মানগুলি সাধারণ পদ্ধতিতে পড়তে হয়:

আপনার config.propertiesফাইল বিন্যাস:

[SECTION_NAME]  
key1 = value1  
key2 = value2  

আপনি কোড:

   import configparser

   config = configparser.RawConfigParser()
   config.read('path_to_config.properties file')

   details_dict = dict(config.items('SECTION_NAME'))

এটি আপনাকে একটি অভিধান দেবে যেখানে কনফিগারেশন ফাইল এবং তার সাথে সম্পর্কিত মানগুলির মতো কীগুলি একই হয়।

details_dict হ'ল:

{'key1':'value1', 'key2':'value2'}

কী 1 এর মান পেতে: details_dict['key1']

এটি একটি পদ্ধতিতে রেখে যা কনফিগার ফাইল থেকে বিভাগটি কেবল একবার পড়ে (কোনও প্রোগ্রাম চলাকালীন প্রথমবারের জন্য পদ্ধতিটি বলা হয়) reads

def get_config_dict():
    if not hasattr(get_config_dict, 'config_dict'):
        get_config_dict.config_dict = dict(config.items('SECTION_NAME'))
    return get_config_dict.config_dict

এখন উপরের ফাংশনটি কল করুন এবং প্রয়োজনীয় কী এর মান পান:

config_details = get_config_dict()
key_1_value = config_details['key1'] 

-------------------------------------------------- -----------

উপরে বর্ণিত পদ্ধতির প্রসারিত করা, বিভাগ দ্বারা স্বয়ংক্রিয়ভাবে বিভাগ পড়া এবং তারপরে মূল নাম অনুসারে বিভাগের নাম দ্বারা অ্যাক্সেস করা।

def get_config_section():
    if not hasattr(get_config_section, 'section_dict'):
        get_config_section.section_dict = dict()

        for section in config.sections():
            get_config_section.section_dict[section] = 
                             dict(config.items(section))

    return get_config_section.section_dict

অ্যাক্সেস করতে:

config_dict = get_config_section()

port = config_dict['DB']['port'] 

(এখানে 'ডিবি' কনফিগার ফাইলে একটি বিভাগের নাম এবং 'পোর্ট' বিভাগ 'ডিবি' এর অধীনে একটি কী))


1

কোডের 2 লাইনের নীচে দেখানো হয় কীভাবে 'জাভা স্টাইল' সম্পত্তি ফাইল লোড করতে পাইথন তালিকা সংজ্ঞা ব্যবহার করতে হবে।

split_properties=[line.split("=") for line in open('/<path_to_property_file>)]
properties={key: value for key,value in split_properties }

বিস্তারিত জানার জন্য নিচে পোস্টে একটি চেহারা আছে https://ilearnonlinesite.wordpress.com/2017/07/24/reading-property-file-in-python-using-comprehension-and-generators/


কোড ফাইলের অবজেক্টটি বন্ধ করে না, কেবলমাত্র লিঙ্কের উত্তরটিও স্বাগত নয়।
অ্যারিস্টটল

এই সমাধানটি বহু-লাইন মান বা মানগুলিতে notেকে দেয় না যা সমান চিহ্নকে অন্তর্ভুক্ত করে।
কনস্ট্যান্টিন তারাশচানস্কি

1

আপনি নীচের মত কনফিগারেশন ফাইল থেকে পড়তে আরগপার্সে "fromfile_prefix_chars" প্যারামিটার ব্যবহার করতে পারেন ---

temp.py

parser = argparse.ArgumentParser(fromfile_prefix_chars='#')
parser.add_argument('--a')
parser.add_argument('--b')
args = parser.parse_args()
print(args.a)
print(args.b)

কনফিগার ফাইল

--a
hello
--b
hello dear

আপনার আদেশ প্রদান করুন

python temp.py "#config"

0

আমি নীচে কনফিগার পার্সার ব্যবহার করে এটি করেছি। কোডটি ধরে নিয়েছে যে একই ডিরেক্টরিতে যেখানে বেসস্টেস্ট স্থাপন করা হয়েছে সেখানে কনফিগারেশন নামে একটি ফাইল রয়েছে:

config.prop

[CredentialSection]
app.name=MyAppName

BaseTest.py:

import unittest
import ConfigParser

class BaseTest(unittest.TestCase):
    def setUp(self):
        __SECTION = 'CredentialSection'
        config = ConfigParser.ConfigParser()
        config.readfp(open('config.prop'))
        self.__app_name = config.get(__SECTION, 'app.name')

    def test1(self):
        print self.__app_name % This should print: MyAppName

0

এটিই আমি ফাইলটি বিশ্লেষণ করতে লিখে এনভিভ ভেরিয়েবল হিসাবে সেট করেছিলাম যা মন্তব্যগুলি এড়িয়ে যায় এবং এইচবি: ডি নির্দিষ্ট করার জন্য কোনও মূল মান লাইন যুক্ত করে নেই

  • -h বা --help মুদ্রণের ব্যবহারের সারাংশ
  • -c চার্ট উল্লেখ করুন যা মন্তব্য চিহ্নিত করে
  • প্রোপ ফাইলে কী এবং মানের মধ্যে পৃথককারী
  • এবং যে বৈশিষ্ট্যগুলি পার্স করা দরকার সেগুলি উল্লেখ করুন যেমন: পাইথন এনভাম্পারামসেট.পি -সি # -s = env.properties

    import pipes
    import sys , getopt
    import os.path
    
    class Parsing :
    
            def __init__(self , seprator , commentChar , propFile):
            self.seprator = seprator
            self.commentChar = commentChar
            self.propFile  = propFile
    
        def  parseProp(self):
            prop = open(self.propFile,'rU')
            for line in prop :
                if line.startswith(self.commentChar)==False and  line.find(self.seprator) != -1  :
                    keyValue = line.split(self.seprator)
                    key =  keyValue[0].strip() 
                    value = keyValue[1].strip() 
                            print("export  %s=%s" % (str (key),pipes.quote(str(value))))
    
    
    
    
    class EnvParamSet:
    
        def main (argv):
    
            seprator = '='
            comment =  '#'
    
            if len(argv)  is 0:
                print "Please Specify properties file to be parsed "
                sys.exit()
            propFile=argv[-1] 
    
    
            try :
                opts, args = getopt.getopt(argv, "hs:c:f:", ["help", "seprator=","comment=", "file="])
            except getopt.GetoptError,e:
                print str(e)
                print " possible  arguments  -s <key value sperator > -c < comment char >    <file> \n  Try -h or --help "
                sys.exit(2)
    
    
            if os.path.isfile(args[0])==False:
                print "File doesnt exist "
                sys.exit()
    
    
            for opt , arg  in opts :
                if opt in ("-h" , "--help"):
                    print " hg:d  \n -h or --help print usage summary \n -c Specify char that idetifes comment  \n -s Sperator between key and value in prop file \n  specify file  "
                    sys.exit()
                elif opt in ("-s" , "--seprator"):
                    seprator = arg 
                elif opt in ("-c"  , "--comment"):
                    comment  = arg
    
            p = Parsing( seprator, comment , propFile)
            p.parseProp()
    
        if __name__ == "__main__":
                main(sys.argv[1:])

0

লাইটব্যান্ড টাইপসেফ কনফিগার লাইব্রেরি প্রকাশ করেছে , যা বৈশিষ্ট্য ফাইল এবং কিছু জেএসওএন-ভিত্তিক এক্সটেনশানগুলিকে পার্স করে। লাইটব্যান্ডের পাঠাগারটি কেবল জেভিএমের জন্য, তবে এটি ব্যাপকভাবে গৃহীত হয়েছে বলে মনে হয় এবং পাইথন সহ অনেকগুলি ভাষায় এখন বন্দর রয়েছে: https://github.com/chimpler/pyhocon


0

আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারেন যা @ এমওয়াল্লেব্রাইবারের সংশোধিত কোড। এটি বৈশিষ্ট্যগুলির ফাইল মন্তব্যগুলিকে সম্মান করে, খালি নতুন লাইন উপেক্ষা করে এবং একক কী মানটি পুনরুদ্ধার করতে দেয়।

def getProperties(propertiesFile ="/home/memin/.config/customMemin/conf.properties", key=''):
    """
    Reads a .properties file and returns the key value pairs as dictionary.
    if key value is specified, then it will return its value alone.
    """
    with open(propertiesFile) as f:
        l = [line.strip().split("=") for line in f.readlines() if not line.startswith('#') and line.strip()]
        d = {key.strip(): value.strip() for key, value in l}

        if key:
            return d[key]
        else:
            return d


0

আমি কনফিগার পার্সার পদ্ধতি অনুসরণ করেছি এবং এটি আমার পক্ষে বেশ ভাল কাজ করেছে। একেকটি প্রপার্টি রিডার ফাইল তৈরি এবং প্রতিটি বিভাগের সাথে সম্পর্কিত সম্পত্তি প্রস্তুত করার জন্য সেখানে কনফিগার পার্সার ব্যবহার করা হয়েছে।

** পাইথন ২.7 ব্যবহৃত হয়েছে

প্রপার্টি রিডার.পি ফাইলের সামগ্রী:

#!/usr/bin/python
import ConfigParser

class PropertyReader:

def readProperty(self, strSection, strKey):
    config = ConfigParser.RawConfigParser()
    config.read('ConfigFile.properties')
    strValue = config.get(strSection,strKey);
    print "Value captured for "+strKey+" :"+strValue
    return strValue

স্কিমা ফাইল পড়ার বিষয়বস্তু:

from PropertyReader import *

class ReadSchema:

print PropertyReader().readProperty('source1_section','source_name1')
print PropertyReader().readProperty('source2_section','sn2_sc1_tb')

.Properties ফাইলের সামগ্রী:

[source1_section]
source_name1:module1
sn1_schema:schema1,schema2,schema3
sn1_sc1_tb:employee,department,location
sn1_sc2_tb:student,college,country

[source2_section]
source_name1:module2
sn2_schema:schema4,schema5,schema6
sn2_sc1_tb:employee,department,location
sn2_sc2_tb:student,college,country

এটি একটি আইএনআই ফাইল, বৈশিষ্ট্য ফাইলে কোনও বিভাগের শিরোনাম থাকবে না
অক্ষয়

0

আপনার অজগর মডিউলে একটি অভিধান তৈরি করুন এবং এতে সবকিছু সংরক্ষণ করুন এবং এটি অ্যাক্সেস করুন, উদাহরণস্বরূপ:

dict = {
       'portalPath' : 'www.xyx.com',
       'elementID': 'submit'}

এখন এটি অ্যাক্সেস করার জন্য আপনি কেবল পারেন:

submitButton = driver.find_element_by_id(dict['elementID'])

1
কিছু কোড নমুনা ভাগ করে নেওয়ার পক্ষে এটি সুপারিশ করা হয়। এখন আপনার উত্তর খুব দরিদ্র
নিকোলাই শেভচেঙ্কো

@ নিকোলায় শেভচেনকো খারাপ ফর্ম্যাটিংয়ের জন্য দুঃখিত, আমি আমার উত্তর আপডেট করেছি
ভিনিত সিং
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.