首页 > 解决方案 > 通过 cmd 使用不同的配置文件进行 Python 项目

问题描述

我想通过具有不同配置的 cmd 窗口启动我的 python 项目,例如需要不同参数的函数:

download.rawData.download(starttime=starttime, endtime=endtime)

starttime 和 endtime 值来自配置文件:(config1.cfg)

[Parameter]
starttime=Monday
endtime=Tuesday

配置2.cfg:

[Parameter]
starttime=tuesday
endtime=friday

从 cmd 启动项目的最佳方法是什么,例如:

Python3 project.py --config1 //for time X
Python3 project.py --config2 //for time Y

...等等,当然在配置文件中声明了不同的开始和结束时间

目标是开始和结束时间的配置在主项目中没有硬编码。

我到目前为止所尝试的:

commandLineArgumentParser: ArgumentParser = argparse.ArgumentParser()
commandLineArgumentParser.add_argument("-config1", "--config1", help="Config file 1")
commandLineArgumentParser.add_argument("-config2", "--config2", help="Config file2")
commandLineArguments = commandLineArgumentParser.parse_args()
config1= commandLineArguments.odessa


starttime = config['Parameter']['starttime']
endtime = config['Parameter']['endtime']

但这不起作用有人有想法吗?

非常感谢!

标签: pythonpython-3.xcmdconfigconfigparser

解决方案


您不需要为每个参数多次运行脚本。只需使用configparser模块来解析您在命令行上指定的配置文件(通过argparse模块):

import argparse
import configparser

parser = argparse.ArgumentParser()
parser.add_argument('config', help="Config file to parse")

args = parser.parse_args()

config = configparser.ConfigParser()
config.read(args.config)
config.sections()  # Returns ['Parameter']

start = config['Parameter']['starttime']
end = config['Parameter']['endtime']

推荐阅读