使用ConfigParser在python中读取配置文件

使用ConfigParser在python中读取配置文件,python,apache-spark,amazon-s3,config,configuration-files,Python,Apache Spark,Amazon S3,Config,Configuration Files,我已经使用configparser在python编写的程序中读取配置。我现在正在从s3读取文件,但我的要求是在程序本身中定义配置,而不是从任何其他外部源。 编写的代码如下: config = configparser.ConfigParser() config.readfp(open(s3:path\config)) 配置文件格式: config.ini [section1] var1=Y var2=Y var3=['col1','col2'] 我正在读上面的文件,它位于s3中,但我不想从s

我已经使用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中提交spark:

'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文件都可用,要么读取程序本身内部的配置。

您可以这样做:

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'

拥有配置文件的全部目的是将运行时配置值与代码分离。如果不想这样做,请使用
configparser
将配置写入临时位置并将其传递给Spark。