使用configparser读取python中的配置文件

fzsnzjdm  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(683)

我使用configparser读取python编写的程序中的配置。我现在正在从s3读取文件,但我的要求是在程序本身中定义配置,而不是从任何其他外部源。编写的代码如下:

config = configparser.ConfigParser()
config.readfp(open(s3:path\config))

配置文件格式:config.ini

[section1]
var1=Y
var2=Y
var3=['col1','col2']

我正在读上面的文件,它位于s3中,但我不想从s3中读取,而是想从程序本身读取。为了实现这一目标,需要做些什么?
上面的代码是用pyspark程序编写的,我用spark submit命令传递配置文件,但要读取配置文件,我需要提供路径,这是不可取的。在aws emr中提交:

'Args': ['spark-submit','--deploy-mode', 'cluster','--master', 'yarn','--executor-memory', conf['emr_step_executor_memory'],'--executor-cores',  conf['emr_step_executor_cores'],'--conf','spark.yarn.submit.waitAppCompletion=true','--conf','spark.rpc.message.maxSize=1024',f'{s3_path}/file1.py',  '--py-files',f'{s3_path}/file2.py',f'{s3_path}/file3.py',f'{s3_path}/file4.py','--files', f'{s3_path}/config ]

由于config.readfp(open(s3:path\config))行的原因,我需要提供s3路径,这是不可取的选项,可以从spark submit传递配置文件,并使其他所有正在读取配置的python文件都可用,也可以在程序本身内部读取配置。

nwlqm0z1

nwlqm0z11#

你可以这样做:

parser = configparser.ConfigParser()
parser.read_dict({'section1': {'key1': 'value1',
                                'key2': 'value2',
                                'key3': 'value3'},
                   'section2': {'keyA': 'valueA',
                                'keyB': 'valueB',
                                'keyC': 'valueC'},
                   'section3': {'foo': 'x',
                                'bar': 'y',
                                'baz': 'z'}})

检查此详细信息以及其他一些替代方法来实现这一点。
样本检索

parser["section1"]["key1"]
'value1'

相关问题